package com.frameworkset.common.hibernate;
/**
* <p>Title: HibernateManager</p>
*
* <p>Description: </p>
*
* <p>
* bboss workgroup
* </p>
* <p>
* Copyright (c) 2007
* </p>
*
* @Date 2009-6-1 下午08:58:51
* @author biaoping.yin
* @version 1.0
*/
import java.io.Serializable;
import org.apache.log4j.Logger;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import com.frameworkset.common..Manager;
public final class HibernateManager implements Serializable
{
private static Logger log = Logger.getLogger(HibernateManager.class);
public HibernateManager()
{
}
public static SessionFactory getSessionFactory()
throws HibernateException
{
if(sessionFactory == null)
{
log.debug("sessionFactory == null,Get session factory with name[" + DEFAULT_SESSION_FACTORY_BEAN_NAME + "]");
if(Manager.getApplicationContext() == null || Manager.getApplicationContext().getBean(DEFAULT_SESSION_FACTORY_BEAN_NAME) == null)
{
log.debug("Manager.getApplicationContext() == null,Get session factory from hibernate directly");
sessionFactory = (new Configuration()).configure().buildSessionFactory();
return sessionFactory;
}
log.debug("Get session factory through Manager");
sessionFactory = (SessionFactory)Manager.getApplicationContext().getBean(DEFAULT_SESSION_FACTORY_BEAN_NAME);
log.debug("Get session factory success!");
}
return sessionFactory;
}
public static Session openSession()
throws HibernateException
{
return getSessionFactory().openSession();
}
public static void closeSession(Session session)
{
if(session != null)
try
{
session.close();
}
catch(HibernateException e)
{
e.printStackTrace();
}
}
public static void rollbackTransaction(Transaction transaction)
{
if(transaction != null)
try
{
transaction.rollback();
}
catch(HibernateException e)
{
e.printStackTrace();
}
}
private static SessionFactory sessionFactory;
public static final String DEFAULT_SESSION_FACTORY_BEAN_NAME = "sessionFactory";
}