复制代码代码如下 :
paquet dao;
importer org.hibernate.HibernateException ;
importer org.hibernate.Session ;
importer org.hibernate.cfg.Configuration ;
/**
* @auteur minxuenetcn
*/
classe publique HibernateSessionFactory {
private final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
configuration privée configuration = new Configuration();
privé org.hibernate.SessionFactory sessionFactory ;
/**
* hibernate.cfg.xml
* @param fichier de configuration
*/
public void setConfiguration(String configFile){
this.configuration=nouvelle Configuration();
configuration.configure(configFile);
}
/**
* Renvoie l'instance de session ThreadLocal.
* @session de retour
* @throwsHibernateException
*/
La session publique getSession() lance HibernateException {
Session session = (Session) threadLocal.get();
if (session == null || !session.isOpen()) {
si (sessionFactory == null) {
reconstruireSessionFactory();
}
session = (sessionFactory != null) ? sessionFactory.openSession()
: nul;
threadLocal.set(session);
}
séance de retour ;
}
/**
* Reconstruire l'usine de sessions de mise en veille prolongée
*
*/
public void reconstructionSessionFactory() {
essayer {
sessionFactory = this.configuration.buildSessionFactory();
} attraper (Exception e) {
Système.err
.println("%%%% Erreur lors de la création de SessionFactory %%%%");
e.printStackTrace();
}
}
/**
* Fermez l'instance unique de session de mise en veille prolongée.
*
* @throwsHibernateException
*/
public void closeSession() lance HibernateException {
Session session = (Session) threadLocal.get();
threadLocal.set(null);
si (session != null) {
session.close();
}
}
/**
* usine de session de retour
*
*/
public org.hibernate.SessionFactory getSessionFactory() {
retourner sessionFactory ;
}
/**
* retourner la configuration de mise en veille prolongée
*/
Configuration publique getConfiguration() {
configuration de retour ;
}
}