复制代码代码如下:
paquete de dao;
importar org.hibernate.HibernateException;
importar org.hibernate.Session;
importar org.hibernate.cfg.Configuration;
/**
* @autor minxuenetcn
*/
clase pública HibernateSessionFactory {
threadLocal final privado<Sesión> threadLocal = new ThreadLocal<Sesión>();
Configuración privada configuración = nueva Configuración();
org.hibernate.SessionFactory privado sessionFactory;
/**
* hibernación.cfg.xml
* @param archivo de configuración
*/
setConfiguration público vacío (archivo de configuración de cadena) {
this.configuration=nueva configuración();
configuración.configure(configFile);
}
/**
* Devuelve la instancia de sesión ThreadLocal.
* @retorno Sesión
* @throws HibernateException
*/
La sesión pública getSession() lanza HibernateException {
Sesión sesión = (Sesión) threadLocal.get();
if (sesión == nulo || !sesión.isOpen()) {
si (sessionFactory == nulo) {
reconstruirSessionFactory();
}
sesión = (sessionFactory! = nulo)? sessionFactory.openSession()
: nulo;
threadLocal.set(sesión);
}
sesión de regreso;
}
/**
* Reconstruir la fábrica de sesiones de hibernación
*
*/
reconstrucción de sesión pública vacía() {
intentar {
sessionFactory = this.configuration.buildSessionFactory();
} captura (Excepción e) {
sistema.err
.println("%%%% Error al crear SessionFactory %%%%");
e.printStackTrace();
}
}
/**
* Cerrar la instancia de sesión única de hibernación.
*
* @throws HibernateException
*/
public void closeSession() lanza HibernateException {
Sesión sesión = (Sesión) threadLocal.get();
threadLocal.set(nulo);
si (sesión! = nulo) {
sesión.cerrar();
}
}
/**
* sesión de regreso a fábrica
*
*/
org.hibernate.SessionFactory pública getSessionFactory() {
devolver sesiónFábrica;
}
/**
* devolver la configuración de hibernación
*/
Configuración pública getConfiguration() {
configuración de retorno;
}
}