package util;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
/**
* Hibernate工具类
* 作用: 获取session与关闭session
* @author 尹涛
*
*/
public class HibernateUtil {
// 创建私有 静态 线程对象
private static ThreadLocal<Session> TLSession = new ThreadLocal<Session>();
// 定义私有 静态conguration对象
private static Configuration configuration;
// 定义 私有 静态 sessionfactory对象
private static SessionFactory sessionFactory;
// 静态域: 在使用该类时,默认加载内容
static{
try {
// 读取解析hibernate.cfg.xml文件
configuration = new Configuration().configure();
// 解析*.hbm.xml文件
sessionFactory = configuration.buildSessionFactory();
} catch (Exception e) {
System.out.println("初始化加载异常");
e.printStackTrace();
}
}
/**
* 获取session对象
* @return session
*/
public static Session currentSession(){
// 获取当前线程中的session对象
Session session = TLSession.get();
// 验证session对象是否为空
if (session == null) {
// 使用工厂对象生产session对象
session = sessionFactory.openSession();
// 将session对象放入线程
TLSession.set(session);
}
return session;
}
public static void closeSession(){
// 获取当前线程中的session对象
Session session = TLSession.get();
// 清空线程中的session对象
TLSession.set(null);
// 验证session是否为空
if (session != null) {
// 关闭session对象
session.close();
}
}
}