更新时间:2024-01-24 来源:黑马程序员 浏览量:

SessionFactory接口负责读取并解析映射文件,以及建立Session对象,它在Hibernate中起到一个缓冲区的作用,会将Configuration对象中的所有配置信息、Hibernate自动生成的SQL语句以及某些可重复利用的数据加载到缓冲区中。同时,它还维护了Hibernate的二级缓存。
通常所使用的SessionFactory实例是通过Configuration对象获取的,其获取方法如下所示:
SessionFactory sessionFactory=config.buildSessionFactory();
SessionFactory具有以下特点。
·它是线程安全的,它的同一个实例能够供多个线程共享。
·它是重量级的,不能随意创建和销毁它的实例。
由于SessionFactory是一个重量级的对象,占用的内存空间较大,所以通常情况下,一个应用程序只需要一个SessionFactory实例,只有应用中存在多个数据源时,才为每个数据源建立一个SessionFactory实例。为此,在实际开发中,通常会抽取出一个工具类提供Session对象。下面就介绍一个简单的抽取方式,如文件23-5所示。
文件23-5 HibernateUtils.java
public class HibernateUtils {
//声明一个私有的静态final类型的Configuration对象
private static final Configuration config;
//声明一个私有的静态final类型SessionFactory对象
private static final SessionFactory factory;
//通过静态代码块构建SessionFactory
static {
config=new Configuation().configure();
factory=config.buildSessionFactory();
}
//提供一个公有的静态方法供外部获取,并返回一个session对象
public static Session getSession() {
return factory.openSession();
}
}在文件23-5中,首先声明了一个私有的静态final类型的Configuration对象和SessionFactory对象,供类中的其他成员使用,下面通过静态方法构建了SessionFactory实例,最后提供了一个公有的静态方法供外部获取session对象。使用此工具类,就可以直接通过HibernateUtils.getSession()的方式获取session对象。
毕业16个工作日,平均薪资13180元,就业率100%,广州黑马AI智能应用开发(Java)学科20250529班
2026-03-06毕业32个工作日,平均薪资11147元,就业率95%,广州黑马AI智能应用开发(Java)学科20250326班
2026-03-05黑马程序员2025全国就业数据发布:全学科平均就业率92.07%,AI开发类就业平均薪资达11869.67元。
2026-03-05黑马全国校区齐开班!场面太太太壮观了!
2026-03-03AI智能应用开发课程紧贴企业刚需,全程高效学习,直达中高级软件开发水平
2026-02-28风口正劲!黑马程序员又一AI智能应用开发班毕业当天100%就业!
2026-02-27