首页常见问题正文

Hibernate框架入门:SessionFactory接口读取并映射文件

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

IT培训班

  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对象。

分享到:
在线咨询 我要报名
和我们在线交谈!