复制代码代码如下:
пакет дао;
импортировать org.hibernate.HibernateException;
импортировать org.hibernate.Session;
импортировать org.hibernate.cfg.Configuration;
/**
* @author minxuenetcn
*/
общественный класс HibernateSessionFactory {
частный окончательный ThreadLocal<Session> threadLocal = новый ThreadLocal<Session>();
частная конфигурация конфигурации = новая конфигурация();
частный org.hibernate.SessionFactory sessionFactory;
/**
* hibernate.cfg.xml
* @param файл конфигурации
*/
общественная недействительность setConfiguration (String configFile) {
this.configuration=новая конфигурация();
Configuration.configure(файл_конфигурации);
}
/**
* Возвращает экземпляр сеанса ThreadLocal.
* @return Сеанс
* @throws HibernateException
*/
публичный сеанс getSession() выдает HibernateException {
Сеанс session = (Session) threadLocal.get();
if (session == null || !session.isOpen()) {
если (sessionFactory == null) {
rebuildSessionFactory();
}
сеанс = (sessionFactory!= null)? sessionFactory.openSession()
: нулевой;
threadLocal.set(сессия);
}
ответный сеанс;
}
/**
* Перестроить фабрику сеансов гибернации.
*
*/
общественный недействительный rebuildSessionFactory () {
пытаться {
sessionFactory = this.configuration.buildSessionFactory();
} catch (Исключение е) {
Система.ошибка
.println("%%%% Ошибка создания SessionFactory %%%%");
е.printStackTrace();
}
}
/**
* Закройте один экземпляр сеанса гибернации.
*
* @throws HibernateException
*/
public void closeSession() выдает HibernateException {
Сеанс session = (Session) threadLocal.get();
threadLocal.set(ноль);
если (сессия != ноль) {
сеанс.закрыть();
}
}
/**
* возврат фабрики сеансов
*
*/
public org.hibernate.SessionFactory getSessionFactory() {
вернуть сессионную фабрику;
}
/**
* вернуть конфигурацию спящего режима
*/
общедоступная конфигурация getConfiguration() {
возврат конфигурации;
}
}