复制代码代码如下:
封装道;
导入 org.hibernate.HibernateException;
导入 org.hibernate.Session;
导入 org.hibernate.cfg.Configuration;
/**
* @作者minxuenetcn
*/
公共类 HibernateSessionFactory {
私有最终 ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
私有配置配置 = new Configuration();
私有 org.hibernate.SessionFactory sessionFactory;
/**
* 休眠.cfg.xml
* @param 配置文件
*/
公共无效setConfiguration(字符串配置文件){
this.configuration=新配置();
配置.configure(configFile);
}
/**
* 返回ThreadLocal Session实例。
* @return 会话
* @抛出HibernateException
*/
公共会话 getSession() 抛出 HibernateException {
会话 session = (Session) threadLocal.get();
if (session == null || !session.isOpen()) {
如果(sessionFactory == null){
重建SessionFactory();
}
会话=(sessionFactory!= null)? sessionFactory.openSession()
: 无效的;
threadLocal.set(会话);
}
返回会话;
}
/**
* 重建休眠会话工厂
*
*/
公共无效重建SessionFactory(){
尝试 {
sessionFactory = this.configuration.buildSessionFactory();
} catch (异常 e) {
系统错误
.println("%%%% 创建 SessionFactory %%%% 时出错");
e.printStackTrace();
}
}
/**
* 关闭单个休眠会话实例。
*
* @抛出HibernateException
*/
公共无效 closeSession() 抛出 HibernateException {
会话 session = (Session) threadLocal.get();
threadLocal.set(null);
if (会话!= null) {
会话.关闭();
}
}
/**
* 返回会话工厂
*
*/
公共 org.hibernate.SessionFactory getSessionFactory() {
返回会话工厂;
}
/**
* 返回休眠配置
*/
公共配置 getConfiguration() {
返回配置;
}
}