成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

輕松理解Hibernate Session管理入門

開發 后端
Hibernate Session是由SessionFactory所創建,SessionFactory是執行緒安全的(Thread-Safe),您可以讓多個執行緒同時存取SessionFactory而不會有數據共享的問題。

本文就Hibernate  Session的入門加以簡單介紹。

Hibernate  Session是Hibernate運作的中心,對象的生命周期、事務的管理、數據庫的存取,都與 Session息息相關,就如同在編寫JDBC時需關心Connection的管理,以有效的方法創建、利用與回收Connection,以減少資源的消耗,增加系統執行效能一樣,有效的Session管理,也是Hibernate應用時需關注的焦點。

Hibernate Session是由SessionFactory所創建,SessionFactory是執行緒安全的(Thread-Safe),您可以讓多個執行緒同時存取SessionFactory而不會有數據共享的問題,然而Session則不是設計為執行緒安全的,所以試圖讓多個執行緒共享一個 Session,將會發生數據共享而發生混亂的問題。

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

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

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

在同一個執行緒中,Session被暫存下來了,但無須擔心數據庫連結Connection持續占用問題,Hibernate會在真正需要數據庫操作時才(從連接池中)取得Connection。

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


【編輯推薦】

  1. Hibernate性能優化全面剖析
  2. 對Hibernate中get()與load()不同點分析
  3. Struts-Spring-Hibernate案例
  4. 簡述Hibernate配置連接池
  5. 對Hibernate中get()與load()不同點分析
責任編輯:仲衡 來源: 360doc
相關推薦

2011-04-13 09:53:20

2024-07-31 15:39:00

2009-09-29 16:04:29

Hibernate S

2009-09-24 17:24:20

Hibernate S

2010-06-21 13:43:46

2009-09-23 17:18:16

Hibernate S

2009-09-25 13:51:13

Hibernate S

2009-09-25 09:46:03

Hibernate s

2009-09-25 10:53:40

Hibernate S

2009-09-22 10:09:21

Hibernate S

2009-09-23 17:03:08

Hibernate S

2015-03-02 15:56:36

2011-02-24 15:04:00

PostgreSQL數據庫psql

2011-03-24 14:40:29

PostgreSQL數管理

2009-06-26 16:34:50

delete()方法Hibernate S

2009-06-26 16:33:09

saveOrUpdatHibernate

2009-06-12 16:00:13

Session方法Hibernate

2009-09-23 14:23:51

Hibernate主鍵

2009-09-24 09:44:32

Hibernate j

2025-03-03 10:00:00

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕av色 | 99精品99| 中文字幕在线观看 | 日韩欧美一区二区三区免费观看 | www午夜视频 | 国户精品久久久久久久久久久不卡 | 久久国产精品精品国产色婷婷 | 美女黄网站 | 精品综合久久 | 亚洲视频在线观看免费 | 国产精品久久久久久久免费大片 | 99精品免费 | 黄色大片免费网站 | 成人免费大片黄在线播放 | 亚洲国产一区在线 | 成人二区 | 欧美视频在线播放 | 久久久久中文字幕 | 一级全黄少妇性色生活免费看 | 91免费小视频| 玖玖精品视频 | 黄色亚洲 | 国产这里只有精品 | 欧美黄色小视频 | 玖玖在线免费视频 | 国产99视频精品免费播放照片 | 天天草夜夜骑 | 亚洲一区二区三区四区五区午夜 | 国产a视频 | 久久亚洲精品久久国产一区二区 | 欧美日韩国产一区二区三区不卡 | 国产激情视频在线观看 | 精品久久久网站 | 日韩中文字幕在线视频 | 亚洲精品18 | 97久久精品午夜一区二区 | 国产成人一区 | 免费观看黄色片视频 | 亚洲国产欧美日韩 | 亚洲天堂av一区 | www亚洲精品 |