cn.easyproject.easycommons.commondao.factory.HibernateSessionFactory Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of easycommondao-hibernate3 Show documentation
Show all versions of easycommondao-hibernate3 Show documentation
Java ORM Common DAO(Data Access Object), eliminate the interface and implements of DAO.
The newest version!
package cn.easyproject.easycommons.commondao.factory;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
/**
* EasyCommonDAO HibernateSessionFactory Configures and provides access to
* Hibernate sessions, tied to the current thread of execution. Follows the
* Thread Local Session pattern.
*
* @author Ray
* @author [email protected]
* @author easyproject.cn
* @since 1.0.0
*/
public class HibernateSessionFactory {
/**
* Location of hibernate.cfg.xml file. Location should be on the classpath
* as Hibernate uses #resourceAsStream style lookup for its configuration
* file. The default classpath location of the hibernate config file is in
* the default package. Use #setConfigFile() to update the location of the
* configuration file for the current session.
*/
private static final ThreadLocal threadLocal = new ThreadLocal();
private static SessionFactory sessionFactory;
private static final String CONFIGURATION_FILE = "hibernate.cfg.xml";
private static Configuration configuration = new Configuration();
static {
try {
// Hibernate 3.X
configuration.configure(CONFIGURATION_FILE);
sessionFactory = configuration.buildSessionFactory();
} catch (Exception e) {
System.err.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}
private HibernateSessionFactory() {
}
/**
* Returns the ThreadLocal Session instance. Lazy initialize the
* SessionFactory if needed.
*
* @return Session Session
* @throws HibernateException
* HibernateException
*/
public static Session getSession() throws HibernateException {
Session session = (Session) threadLocal.get();
if (session == null || !session.isOpen()) {
if (sessionFactory == null) {
rebuildSessionFactory();
}
session = (sessionFactory != null) ? sessionFactory.openSession() : null;
threadLocal.set(session);
}
return session;
}
/**
* Rebuild hibernate session factory
*
*/
public static void rebuildSessionFactory() {
try {
configuration.configure(CONFIGURATION_FILE);
sessionFactory = configuration.buildSessionFactory();
} catch (Exception e) {
System.err.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}
/**
* Close the single hibernate session instance.
*
* @throws HibernateException
* HibernateException
*/
public static void closeSession() throws HibernateException {
Session session = (Session) threadLocal.get();
threadLocal.set(null);
if (session != null) {
session.close();
}
}
/**
* @return session factory
*
*/
public static org.hibernate.SessionFactory getSessionFactory() {
return sessionFactory;
}
} © 2015 - 2025 Weber Informatics LLC | Privacy Policy