复制代码代码如下:
pacote dao;
importar org.hibernate.HibernateException;
importar org.hibernate.Session;
importar org.hibernate.cfg.Configuration;
/**
* @autor minxuenetcn
*/
classe pública HibernateSessionFactory {
private final ThreadLocal<Sessão> threadLocal = new ThreadLocal<Sessão>();
configuração privada configuração = nova configuração();
private org.hibernate.SessionFactory sessionFactory;
/**
* hibernate.cfg.xml
* @param arquivoconfig
*/
public void setConfiguration(String arquivoconfig){
this.configuration=nova configuração();
configuração.configure(configArquivo);
}
/**
* Retorna a instância da sessão ThreadLocal.
* @return Sessão
* @throws HibernateException
*/
Sessão pública getSession() lança HibernateException {
Sessão sessão = (Sessão) threadLocal.get();
if (sessão == null || !session.isOpen()) {
if (sessionFactory == null) {
reconstruirSessionFactory();
}
sessão = (sessionFactory! = nulo)? sessionFactory.openSession()
: nulo;
threadLocal.set(sessão);
}
sessão de retorno;
}
/**
* Reconstruir fábrica de sessão de hibernação
*
*/
public void reconstruirSessionFactory() {
tentar {
sessionFactory = this.configuration.buildSessionFactory();
} catch (Exceção e) {
Sistema.err
.println("%%%% Erro ao criar SessionFactory %%%%");
e.printStackTrace();
}
}
/**
* Feche a instância única da sessão de hibernação.
*
* @throws HibernateException
*/
public void closeSession() lança HibernateException {
Sessão sessão = (Sessão) threadLocal.get();
threadLocal.set(null);
if (sessão! = nulo) {
sessão.close();
}
}
/**
* fábrica de sessão de retorno
*
*/
public org.hibernate.SessionFactory getSessionFactory() {
retornar sessãoFactory;
}
/**
* retornar configuração de hibernação
*/
Configuração pública getConfiguration() {
configuração de retorno;
}
}