Session管理

一個應用的結構通常是


一個請求就是一個事務,所以不能在dao中打開、關閉session,否則多個dao對應的就不是同一個事務。

模擬session管理,將session放在過濾器中處理:


class TxFilter implements Filter{


puboic void doFilter(request, response, chain){
session = sf.openSession();
Utils.threadLocal.set(session); // 綁定到當前線程上
try{
tx = session.beginTransaction();
chain.doFitler(); // 放行
tx.commit();
}catch(e){
tx.rollback();
throw e;
}finallay{
session.close();
Utils.threadLocal.remove(); // 移除
}


}


}


class UserDao{

public void saveUser(User user){
session = Utils.threadLocal.get();
session.save(user);
}

}


public class Utils {


public static ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();


}

發佈了238 篇原創文章 · 獲贊 20 · 訪問量 29萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章