beyond_beyond 听着beyond的歌长大了

J2EE VS dotNET

导航

HibernateUtil.java

Hibernate常用工具类
import net.sf.hibernate.HibernateException;
import net.sf.hibernate.Session;
import net.sf.hibernate.Transaction;
import net.sf.hibernate.cfg.Configuration;

public class HibernateUtil {

     
private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";

    
/** Holds a single instance of Session */
    
private static final ThreadLocal threadLocal = new ThreadLocal();

    
private static final ThreadLocal threadTransaction = new ThreadLocal();

    
/** The single instance of hibernate configuration */
    
private static final Configuration cfg = new Configuration();

    
/** The single instance of hibernate SessionFactory */
    
private static net.sf.hibernate.SessionFactory sessionFactory;

    
/**
     * Returns the ThreadLocal Session instance. Lazy initialize the
     * <code>SessionFactory</code> if needed.
     *
     * @return Session
     * @throws HibernateException
     
*/

    
public static Session getSession() throws HibernateException {
        Session session 
= (Session) threadLocal.get();

        
if (session == null{
            
if (sessionFactory == null{
                
try {
                    cfg.configure(CONFIG_FILE_LOCATION);
                    sessionFactory 
= cfg.buildSessionFactory();
                }
 catch (Exception e) {
                    System.err.println(
"%%%% Error Creating SessionFactory %%%%");
                    e.printStackTrace();
                }

            }

            session 
= sessionFactory.openSession();
            threadLocal.
set(session);
        }

        
return session;
    }


    
/**
     * Close the single hibernate session instance.
     *
     * @throws HibernateException
     
*/

    
public static void closeSession() throws HibernateException {
        Session session 
= (Session) threadLocal.get();
        threadLocal.
set(null);
        
if (session != null{
            session.close();
        }

    }


    
/**
     * Default constructor.
     
*/

    
private HibernateUtil() {
    }


    
public static void beginTransaction() throws HibernateException {
        Transaction tx 
= (Transaction) threadTransaction.get();
        
try {
            
if (tx == null{
                tx 
= getSession().beginTransaction();
                threadTransaction.
set(tx);
            }

        }
 catch (HibernateException ex) {
            
throw new HibernateException(ex.toString());
        }

    }


    
public static void commitTransaction() throws HibernateException {
        Transaction tx 
= (Transaction) threadTransaction.get();
        
try {
            
if (tx != null && !tx.wasCommitted() && !tx.wasRolledBack())
                tx.commit();
            threadTransaction.
set(null);
        }
 catch (HibernateException ex) {
            rollbackTransaction();
            
throw new HibernateException(ex.toString());
        }

    }


    
public static void rollbackTransaction() throws HibernateException {
        Transaction tx 
= (Transaction) threadTransaction.get();
        
try {
            threadTransaction.
set(null);
            
if (tx != null && !tx.wasCommitted() && !tx.wasRolledBack()) {
                tx.rollback();
            }

        }
 catch (HibernateException ex) {
            
throw new HibernateException(ex.toString());
        }
 finally {
            closeSession();
        }

    }

}

posted on 2005-04-27 15:55  beyond_beyond  阅读(1506)  评论(0编辑  收藏  举报