版权声明:版权所有@万星明 https://blog.csdn.net/qq_19533277/article/details/84893560
1、Configuration
该接口只存在系统初始化阶段,将SessionFactory创建完成,语法如下:
Configuration configuration = new Configuration().configure();
或者:
Configuration configuration = new Configuration().configure("xml文件位置");
2、SessionFactory
该接口负责hibernate初始化和建立Session对象,起到缓冲区作用,hibernate将自动生成的SQL语句、映射数据和某些可重复利用的数据放在这个缓冲区中。
SessionFactory sessionFactory = config.buildSessionFactory();
- 线程安全,同一个实例能够供多个线程共享
- 重量级,不能随意创建和销毁实例
通常抽取出HibernateUtils工具类,用来提供session对象:
public class HibernateUtils{
//声明一个私有的静态final类型的Configuration对象
private static final Configuration config;
//声明一个私有的静态final类型的sessionFactory对象
private static final SessionFactory factory;
//通过静态代码块构建SessionFactory
static {
config = new Configuration().configure();
factory = config.buildSessionFactory();
}
//提供一个公有的静态方法供外部获取,并返回一个session对象
public static Session getSession(){
return factory.openSession();
}
}
3、Session
应用程序与数据库之间交互操作的一个单线程对象,主要为持久化对象提供创建、读取和删除等功能。
//采用openSession创建
Session session = sessionFactory.openSession();
//采用getCurrentSession创建
Session session = factory.getCurrentSession();
采用openSession:SessionFactory直接创建一个新的session实例,在使用完后需要调用close()方法进行手动关闭。
采用getCurrentSession:会将创建的Session的实例绑定在当前线程,在提交或回滚操作时自动关闭。
4、Transaction
数据库事务接口,对底层事务接口进行了封装。
Transaction trans = session.beginTransaction();
- commit():提交相关联的session实例
- rollback():回滚,撤销事务操作
- wasCommitted():检查事务是否提交
5、Query
1、获得Hibernate Session对象
2、编写HQL语句
3、调用session.createQuery创建查询对象
4、如果HQL语句包含参数,调用Query的setXxx设置参数
5、调用Query对象的list()或uniqueResult()方法执行查询