0
点赞
收藏
分享

微信扫一扫

hibernate工具类

package com.btr.hb;
 

import org.apache.commons.logging.Log;
 
import org.apache.commons.logging.LogFactory;
 
import org.hibernate.HibernateException;
 
import org.hibernate.Session;
 
import org.hibernate.SessionFactory;
 
import org.hibernate.cfg.Configuration;
 
import org.hibernate.Transaction;
 
/**
 
 * @author linliangyi@team of miracle
 
 *
 
 *    Hibernate 工具类  
 
 *
 
 */
 
public class HibernateUtil {
 
    
 
    private static Log log = LogFactory.getLog(HibernateUtil.class);
 
    private static final SessionFactory sessionFactory;
 

    static {
 
        try {
 
            // Create the SessionFactory
 
            sessionFactory = new Configuration().configure().buildSessionFactory();
 
        } catch (Throwable ex) {
 
            ex.printStackTrace();
 
            log.error("Initial SessionFactory creation failed.", ex);
 
            throw new ExceptionInInitializerError(ex);
 
        } // end of the try - catch block
 
    } // end of static block
 

    public static final ThreadLocal localSession = new ThreadLocal();
 
    public static final ThreadLocal localTransaction = new ThreadLocal();
 
    
 
    public static Session openSession() throws HibernateException {
 
        Session session = (Session)localSession.get();
 
        if(session == null){
 
            session = sessionFactory.openSession();
 
            localSession.set(session);
 
        }
 
        
 
        if(!session.isOpen()){
 
            localSession.set(null);
 
            session = sessionFactory.openSession();
 
            localSession.set(session);
 
        }
 
        return session;
 
    }
 
    
 
    public static void closeSession() throws HibernateException {
 
        Session session = (Session)localSession.get();
 
        localSession.set(null);
 
        if(session != null){
 
            session.close();
 
            session = null;
 
        }
 
    }
 
    
 
    public static Transaction beginTransaction() throws HibernateException {
 
        Transaction tx = (Transaction)localTransaction.get();
 
        if(tx == null){
 
            tx = openSession().beginTransaction();
 
            localTransaction.set(tx);
 
        }
 
        if(tx.wasCommitted()) {
 
            tx = null;
 
            tx = openSession().beginTransaction();
 
            localTransaction.set(tx);
 
        }
 
        return tx;
 
    }
 

    public static void commitTransaction() throws HibernateException {
 
        Transaction tx = (Transaction)localTransaction.get();
 
        localTransaction.set(null);
 
        if(tx != null){
 
            tx.commit();
 
            tx = null;
 
        }
 
    }
 
    
 
    public static void rollbackTransaction() throws HibernateException {
 
        Transaction tx = (Transaction)localTransaction.get();
 
        localTransaction.set(null);
 
        if(tx != null){
 
            tx.rollback();
 
            tx = null;
 
        }
 
    }
 

    public static void main(String[] args){
 
    }
 
}

举报

相关推荐

0 条评论