复制番号代番号次のように:
パッケージdao;
org.hibernate.HibernateException をインポートします。
org.hibernate.Session をインポートします。
org.hibernate.cfg.Configuration をインポートします。
/**
* @author minxuenetcn
*/
パブリック クラス HibernateSessionFactory {
private Final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
プライベート構成configuration = new Configuration();
プライベート org.hibernate.SessionFactory sessionFactory;
/**
* hibernate.cfg.xml
* @param configFile
*/
public void setConfiguration(String configFile){
this.configuration=新しい構成();
構成.configure(configFile);
}
/**
* ThreadLocal Session インスタンスを返します。
* @return セッション
* @throws HibernateException
*/
public Session getSession() が HibernateException をスローする {
セッション session = (セッション) threadLocal.get();
if (session == null || !session.isOpen()) {
if (sessionFactory == null) {
rebuildSessionFactory();
}
session = (sessionFactory != null) ? sessionFactory.openSession()
:ヌル;
threadLocal.set(セッション);
}
セッションを返す。
}
/**
* 休止状態セッションファクトリーを再構築する
*
*/
public void再構築SessionFactory() {
試す {
sessionFactory = this.configuration.buildSessionFactory();
} catch (例外 e) {
システムエラー
.println("%%%% SessionFactory 作成中にエラー %%%%");
e.printStackTrace();
}
}
/**
* 単一の休止状態セッション インスタンスを閉じます。
*
* @throws HibernateException
*/
public void closeSession() は HibernateException をスローします {
セッション session = (セッション) threadLocal.get();
threadLocal.set(null);
if (セッション != null) {
session.close();
}
}
/**
* セッションファクトリーを返す
*
*/
public org.hibernate.SessionFactory getSessionFactory() {
セッションファクトリーを返します。
}
/**
* 休止状態設定を返す
*/
public 構成 getConfiguration() {
構成を返します。
}
}