是一个生成Session的工厂类
特点:
1.由Configuration通过加载配置文件创建该对象。
SessionFactory factory = config.buildSessionFactory();
2.SessionFactory对象中保存了当前的数据库配置信息和所有映射关系以及预定义的SQL语句。同时,SessionFactory还负责维护Hibernate的二级缓存。
3.一个SessionFactory实例对应一个数据库,应用从该对象获得Session实例。
4.SessionFactory是线程安全的,意味着它的一个实例可以被应用的多个线程共享。
5.SessionFactory是重量级的,意味着不能随意创建和销毁它的实例,如果只需要创建一个数据库对象,只需要创建一个SessionFactory实例,且在应用初始化的时候完成。
6.SessionFactory需要一个较大的缓存,用来存放预定义的SQL语句及实体的映射信息,另外可以配置一个缓存插件,这个插件被称为Hibernate的二级缓存,被多个线程共享。
总结:
一般一个应用使用一个SessionFactory,最好是在应用启动时就完成初始化
SessionFactory工具类:
import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; /** * SessionFactory工具类 * @author NEWHOM * */ public class HibernateUtils { private static final Configuration CONFIG; private static final SessionFactory FACTORY; static{ //加载配置文件 CONFIG = new Configuration().configure(); //生成SessionFactory FACTORY = CONFIG.buildSessionFactory(); } //获取Session对象 public static Session openSession(){ return FACTORY.openSession(); } //获取线程的getCurrentSession对象 public static Session getCurrentSession(){ return FACTORY.getCurrentSession(); } }