Hibernate SessionFactory具有以下特点:
- 它是线程安全的,它的同一个实例能够供多个线程使用。
- 它是重量级的,不能随意地创建和销毁它的实例。
由于SessionFactory的以上特点,一般情况下,一个项目中只需要一个SessionFactory,只有当应用存在多个数据源时,才为每个数据源创建一个SessionFactory实例。因此,在实际项目使用中,通常会抽取出一个HibernateUtils的工具类,用来提供Session对象。
package org.hrbust.utils;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtils {
private static final Configuration CONFIG;
private static final SessionFactory FACTORY;
static{
//加载XML配置文件
CONFIG = new Configuration().configure();
//构建工厂
FACTORY = CONFIG.buildSessionFactory();
}
//从工厂中获得session对象
public Session getSession(){
return FACTORY.openSession();
}
}