?? hibernateutil.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 + -