⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hibernateutil.java

📁 项目是实现网络购物功能
💻 JAVA
字号:
package com.tarena.shoppingcart.util;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {
	private static SessionFactory sf;
	private static ThreadLocal<Session> sessions = new ThreadLocal<Session>();
	private static ThreadLocal<Transaction> transactions = new ThreadLocal<Transaction>();
    
    static
    {
        try
        {
            Configuration config = new Configuration();
            sf = config.configure().buildSessionFactory();
        }catch(Throwable t)
        {
            t.printStackTrace();
            throw new ExceptionInInitializerError(t);
        }
    }
    
    //取得当前线程的session实例
    public static Session currentSession(){
    	Session s = sessions.get();
    	//如果当前session实例存在并可用,则返回
		if(s!=null && s.isOpen()){
			return s;
		}
		
		//如果当前session不存在或不可用,则创建一个新的session实例,保存并返回
		sessions.set(sf.openSession());
		return sessions.get();
    }
    
    //关闭当前线程的session
    public static void closeSession(){
    	Session s = (Session) sessions.get();
		if(s!=null && s.isOpen()){
			s.close();
		}
		//解除引用
		sessions.set(null);
    }
    
    //开始一个事务
    public static void beginTransaction(){
    	//如果当前线程没有开启的事务则开始一个新的事务,并保存该事务
    	if(transactions.get()==null){
    		transactions.set(currentSession().beginTransaction());
    	}
    }
    
    //提交当前事务
    public static void commitTransaction(){
    	Transaction tran = transactions.get();
    	//提交当前事务并解除保存的引用
		if(tran!=null && !tran.wasCommitted() && !tran.wasRolledBack()){
			tran.commit();
			transactions.set(null);
		}
	}
	
    //回滚当前事务
	public static void roolbackTransaction(){
		Transaction tran = transactions.get();
    	//回滚当前事务并解除保存的引用
		if(tran!=null && !tran.wasCommitted() && !tran.wasRolledBack()){
			tran.rollback();
			transactions.set(null);
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -