av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

輕松理解HibernateSession管理入門(mén)

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

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

Hibernate  Session是Hibernate運(yùn)作的中心,對(duì)象的生命周期、事務(wù)的管理、數(shù)據(jù)庫(kù)的存取,都與 Session息息相關(guān),就如同在編寫(xiě)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ù)共享的問(wèn)題,然而Session則不是設(shè)計(jì)為執(zhí)行緒安全的,所以試圖讓多個(gè)執(zhí)行緒共享一個(gè) Session,將會(huì)發(fā)生數(shù)據(jù)共享而發(fā)生混亂的問(wèn)題。

在Hibernate參考手冊(cè)中的***章快速入門(mén)中,示范了一個(gè)HibernateUtil,它使用了ThreadLocal類(lèi)別來(lái)建立一個(gè) Session管理的輔助類(lèi),這是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ù),所以避開(kāi)Session的多執(zhí)行緒之間的數(shù)據(jù)共享問(wèn)題,以下列出Hibernate參考手冊(cè)中的HibernateUtil類(lèi):

 
 
 
  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被暫存下來(lái)了,但無(wú)須擔(dān)心數(shù)據(jù)庫(kù)連結(jié)Connection持續(xù)占用問(wèn)題,Hibernate會(huì)在真正需要數(shù)據(jù)庫(kù)操作時(shí)才(從連接池中)取得Connection。

在Web應(yīng)用程序中,我們可以藉助Filter來(lái)進(jìn)行Session管理,在需要的時(shí)候開(kāi)啟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)頁(yè)標(biāo)題:輕松理解HibernateSession管理入門(mén)
網(wǎng)站路徑:http://uogjgqi.cn/article/coijjcs.html
掃二維碼與項(xiàng)目經(jīng)理溝通

我們?cè)谖⑿派?4小時(shí)期待你的聲音

解答本文疑問(wèn)/技術(shù)咨詢(xún)/運(yùn)營(yíng)咨詢(xún)/技術(shù)建議/互聯(lián)網(wǎng)交流