日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
輕松理解HibernateSession管理入門

本文就Hibernate  Session的入門加以簡(jiǎn)單介紹。

創(chuàng)新互聯(lián)是一家專業(yè)提供綏化企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、H5高端網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為綏化眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。

Hibernate  Session是Hibernate運(yùn)作的中心,對(duì)象的生命周期、事務(wù)的管理、數(shù)據(jù)庫的存取,都與 Session息息相關(guān),就如同在編寫JDBC時(shí)需關(guān)心Connection的管理,以有效的方法創(chuàng)建、利用與回收Connection,以減少資源的消耗,增加系統(tǒng)執(zhí)行效能一樣,有效的Session管理,也是Hibernate應(yīng)用時(shí)需關(guān)注的焦點(diǎn)。

Hibernate Session是由SessionFactory所創(chuàng)建,SessionFactory是執(zhí)行緒安全的(Thread-Safe),您可以讓多個(gè)執(zhí)行緒同時(shí)存取SessionFactory而不會(huì)有數(shù)據(jù)共享的問題,然而Session則不是設(shè)計(jì)為執(zhí)行緒安全的,所以試圖讓多個(gè)執(zhí)行緒共享一個(gè) Session,將會(huì)發(fā)生數(shù)據(jù)共享而發(fā)生混亂的問題。

在Hibernate參考手冊(cè)中的***章快速入門中,示范了一個(gè)HibernateUtil,它使用了ThreadLocal類別來建立一個(gè) Session管理的輔助類,這是Hibernate Session管理一個(gè)廣為應(yīng)用的解決方案,ThreadLocal是Thread- Specific Storage模式的一個(gè)運(yùn)作實(shí)例,您可以在下面這篇文章中了解Thread-Specific Storage模式:
designpattern:Thread-Specific Storage

由于Thread-Specific Stroage模式可以有效隔離執(zhí)行緒所使用的數(shù)據(jù),所以避開Session的多執(zhí)行緒之間的數(shù)據(jù)共享問題,以下列出Hibernate參考手冊(cè)中的HibernateUtil類:

 
 
 
  1. HibernateUtil.java 
  2. import net.sf.hibernate.*; 
  3. import net.sf.hibernate.cfg.*; 
  4. public class HibernateUtil { 
  5. private static Log log = LogFactory.getLog(HibernateUtil.class); 
  6. private static final SessionFactory sessionFactory; 
  7. static { 
  8. try { 
  9. // Create the SessionFactory 
  10. sessionFactory = new Configuration().configure().buildSessionFactory(); 
  11. } catch (Throwable ex) { 
  12. log.error("Initial SessionFactory creation failed.", ex); 
  13. throw new ExceptionInInitializerError(ex); 
  14. public static final ThreadLocal session = new ThreadLocal(); 
  15. public static Session currentSession() throws HibernateException { 
  16. Session s = (Session) session.get(); 
  17. // Open a new Session, if this Thread has none yet 
  18. if (s == null) { 
  19. s = sessionFactory.openSession(); 
  20. session.set(s); 
  21. return s; 
  22. public static void closeSession() throws HibernateException { 
  23. Session s = (Session) session.get(); 
  24. session.set(null); 
  25. if (s != null) 
  26. s.close(); 

在同一個(gè)執(zhí)行緒中,Session被暫存下來了,但無須擔(dān)心數(shù)據(jù)庫連結(jié)Connection持續(xù)占用問題,Hibernate會(huì)在真正需要數(shù)據(jù)庫操作時(shí)才(從連接池中)取得Connection。

在Web應(yīng)用程序中,我們可以藉助Filter來進(jìn)行Session管理,在需要的時(shí)候開啟Session,并在Request結(jié)束之后關(guān)閉Session,這個(gè)部份,在JavaWorld的Wiki上有個(gè)很好的例子:
http://www.javaworld.com.tw/confluence/pages/viewpage.action?pageId=805
另外在Hibernate中文網(wǎng)上也有一篇介紹:
http://www.hibernate.org.cn/80.html


網(wǎng)站名稱:輕松理解HibernateSession管理入門
本文鏈接:http://www.5511xx.com/article/coijjcs.html