【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的映射: