zoukankan      html  css  js  c++  java
  • 【hibernate-笔记】

    //1 创建,调用空参构造
    Configuration conf = new Configuration().configure();
    //2 根据配置信息,创建 SessionFactory对象
    SessionFactory sf = conf.buildSessionFactory();

    Session session = sf.openSession();//每次open session 获取的都不是同一个对象

    Session session = sf.getCurrentSession();//同一个线程绑定的session是一个对象

    // 控制事务
    Transaction tx = session.beginTransaction();

    session.save(object); //持久化状态

    tx.commit();
    session.close(); 

    hibernate 主键自增策略下插入操作会先执行select count(*) 操作来获取最大的id值,用来获取插入本次save的主键

    hibernate 的一级缓存机制: 查询出记录以后会保存在内存中,下次查询会在缓存中寻找是否有该查询记录。 

    HQL:

    String hql = " from Stu"; // 查询所有Customer对象

    Query query = session.createQuery(hql);

    List<Student> list = query.list(); // 返回list结果

    query.uniqueResult();//接收唯一的查询结果

    条件查询:

    //HQL语句中,不可能出现任何数据库相关的信息的
    // >        gt
    // >        = ge
    // <        lt
    // <=        le
    // ==        eq
    // !=       ne
    // in        in
    // between and   between
    // like       like
    // is not null        isNotNull
    // is null              isNull
    // or       or
    // and      and

    Student criteria = session.createCriteria(Student.class);

    //执行查询获得结果

    List<Student> list = criteria.list();

    //添加查询参数 => 查询cust_id为1的Stu对象
    criteria.add(Restrictions.eq("stu_id", 1l));

    Stu s = (Student) criteria.uniqueResult();

    //创建criteria查询对象
    Criteria criteria = session.createCriteria(Student.class);
    //设置分页信息 limit ?,?
    criteria.setFirstResult(1);
    criteria.setMaxResults(2);
    //执行查询
    List<Srudent> list = criteria.list();

    //查询总数

    //创建criteria查询对象
    Criteria criteria = session.createCriteria(Student.class);
    //设置查询的聚合函数 => 总行数
    criteria.setProjection(Projections.rowCount());
    //执行查询
    Long count = (Long) criteria.uniqueResult();

    sql:

    SQLQuery query = session.createSQLQuery("select * from stu");
    List<Object[]> list = query.list();

    SQLQuery query = session.createSQLQuery("select * from stu");

    //指定将结果集封装到哪个对象中
    query.addEntity(Student.class);
    // 调用方法查询结果
    List<Student> list = query.list();

    //创建sql查询对象
    SQLQuery query = session.createSQLQuery("select * from stu where stu_id = ?");
    query.setParameter(0, 1l);
    //指定将结果集封装到哪个对象中
    query.addEntity(Student.class);
    //调用方法查询结果
    List<Studnet> list = query.list();

    //创建sql查询对象
    SQLQuery query = session.createSQLQuery("select * from stu limit ?,? ");
    query.setParameter(0, 0);
    query.setParameter(1, 1);
    //指定将结果集封装到哪个对象中
    query.addEntity(Student.class);
    //调用方法查询结果
    List<Studnet> list = query.list();

    hibernate的映射:

  • 相关阅读:
    Oracle中有大量的sniped会话
    Error 1130: Host '127.0.0.1' is not allowed to connect to this MySQL server
    汉字转换为拼音以及缩写(javascript)
    高效率随机删除数据(不重复)
    vs2010 舒服背景 优雅字体 配置
    mvc中的ViewData用到webfrom中去
    jquery ajax return值 没有返回 的解决方法
    zShowBox (图片放大展示jquery版 兼容性好)
    动感效果的TAB选项卡 jquery 插件
    loading 加载提示······
  • 原文地址:https://www.cnblogs.com/yangjian-java/p/6755027.html
Copyright © 2011-2022 走看看