由于SessionFactory是线程安全的,在hibernate中对应数据库,而且SessionFactory的创建过程是重量级的,创建比较耗时,通常只创建一次。所以用HibernateUtils类封装了SessionFactory:
package com.wyx.hibernate;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtils {
private static SessionFactory factory =null;
static{
try {
//new Configuration()默认获取的是Hibernate.property
factory = new Configuration().configure().buildSessionFactory();
} catch (HibernateException e) {
e.printStackTrace();
}
}
public static Session getSession(){
Session session = factory.openSession();
return session;
}
public static void closeSession(Session session){
if(session != null){
if(session.isOpen()){
session.close();
}
}
}
public static SessionFactory getSessionFactory(){
return factory;
}
}