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

講解Hibernate ThreadLocal

開發 后端
這里介紹當線程調用Hibernate ThreadLocal.get方法時, Hibernate ThreadLocal會根據當前線程對象的引用,取出Map中對應的對象返回。

Hibernate有很多值得學習的地方,這里我們主要介紹Hibernate ThreadLocal,包括介紹Hibernate官方開發手冊標準示例等方面。

Hibernate ThreadLocal

它會為每個線程維護一個私有的變量空間。實際上, 其實現原理是在JVM 中維護一個Map,這個Map的key 就是當前的線程對象,而value則是 線程通過Hibernate ThreadLocal.set方法保存的對象實例。當線程調用Hibernate ThreadLocal.get方法時, Hibernate ThreadLocal會根據當前線程對象的引用,取出Map中對應的對象返回。

這樣,Hibernate ThreadLocal通過以各個線程對象的引用作為區分,從而將不同線程的變量隔離開來。

Hibernate官方開發手冊標準示例:

  1. public class HibernateUtil {   
  2. private static SessionFactory sessionFactory;  
  3. static {   
  4. try {   
  5. // Create the SessionFactory sessionFactory = new Configuration().
    configure().buildSessionFactory();  
  6. }   
  7. catch (HibernateException ex) {   
  8. throw new RuntimeException( "Configuration problem: " + ex.getMessage(), ex );  
  9. }   
  10. }   
  11. public static final ThreadLocal session = new ThreadLocal();  
  12. public static Session currentSession() throws HibernateException {   
  13. Session s = (Session) session.get();  
  14. // Open a new Session, if this Thread has none yet if (s == null) {   
  15. s = sessionFactory.openSession();  
  16. session.set(s);  
  17. }   
  18. return s;  
  19. }   
  20. public static void closeSession() throws HibernateException {   
  21. Session s = (Session) session.get();  
  22. session.set(null);  
  23. if (s != null) s.close();  
  24. }   

通過filter實現session的重用:

  1. public class PersistenceFilter implements Filter {   
  2. protected static ThreadLocal hibernateHolder = new ThreadLocal();  
  3. public void doFilter(ServletRequest request, 
    ServletResponse response, FilterChain chain) 
  4. throws IOException,ServletException {   
  5. hibernateHolder.set(getSession());  
  6. try {   
  7. ……   
  8. chain.doFilter(request, response);  
  9. ……   
  10. }   
  11. finally {   
  12. Session sess = (Session)hibernateHolder.get();  
  13. if (sess != null) { hibernateHolder.set(null);  
  14. try { sess.close(); } catch (HibernateException ex) {   
  15. throw new ServletException(ex);  
  16. }   
  17. }   
  18. }   
  19. }   
  20. ……  

【編輯推薦】

  1. 描述Hibernate使用JCA
  2. Hibernate cartridge學習總結
  3. 淺析Hibernate實現對象持久化
  4. 簡述Hibernate Synchronizer
  5. 概述Hibernate Session
責任編輯:佚名 來源: IT168
相關推薦

2009-09-29 10:12:03

Hibernate A

2009-09-29 14:03:14

Hibernate數據

2009-09-24 18:11:56

Hibernate q

2009-09-28 11:30:53

Hibernate核心

2009-09-25 16:08:12

Hibernate f

2009-09-23 15:50:21

Hibernate u

2009-09-24 10:50:31

Hibernate主鍵

2009-09-24 17:11:53

Hibernate處理

2009-09-25 17:03:29

Hibernate是什

2009-09-27 17:23:16

Hibernate應用

2009-06-16 14:36:54

Hibernate繼承

2009-09-24 10:22:38

Hibernate3新

2009-09-24 11:04:56

Hibernate二級

2024-10-28 08:15:32

2018-04-09 08:17:36

線程ThreadLocal數據

2011-07-14 13:50:09

ThreadLocal

2025-06-27 07:19:48

2021-05-06 08:55:24

ThreadLocal多線程多線程并發安全

2023-08-02 08:54:58

Java弱引用鏈表

2022-05-11 07:36:12

Java線程安全
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91操操操 | 久一精品 | 国产91一区二区三区 | 欧美国产日韩一区二区三区 | 91麻豆产精品久久久久久夏晴子 | 久久久91精品国产一区二区三区 | 精品久久一区 | 精品国产乱码久久久久久闺蜜 | 正在播放国产精品 | 午夜精品在线 | 国产精品精品视频一区二区三区 | 国产一区二区三区 | 色综合视频在线 | 久久久亚洲一区 | 操人视频在线观看 | 国产日韩欧美精品一区二区三区 | 国内av在线| 久久综合99| 一区二区中文字幕 | 大伊人久久 | 中文字幕日韩一区 | 成人精品| 成人午夜免费视频 | 国产一区久久 | 一级久久久久久 | 亚洲欧美日韩在线 | 日日夜精品视频 | 亚洲欧美日韩精品久久亚洲区 | 久久精品视频91 | 免费成人av| 精品久久久久久久久久久久久久 | 国产亚洲精品美女久久久久久久久久 | 国产一区二区精品在线观看 | 欧美激情精品久久久久久 | 天天爱av | 国外成人在线视频 | 亚洲一区二区三区四区五区中文 | 一区二区三区高清 | 毛片a级毛片免费播放100 | 天天干天天操天天爽 | 高清一区二区视频 |