複製程式碼如下:
封裝道;
導入 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() {
返回配置;
}
}