hibernate與spring整合獲取session的幾種方式的區別

這個是hibernate與spring整合開發,讓DAO繼承了spring的HibernateDaoSupport,這樣的確可以提升開發效率 ,可是不夠靈活,並且使DAO層依賴於spring的api,增長了耦合。可是不考慮複用的話還能夠。spring

    下面一個一個的分析: this.getsession其實是調用了父類中的方法得到session。使用spring管理hibernate的SessionFactory的時候,這個方法會從session池中拿出一session.這樣作有可能有問題,就是超session池鏈接數的時候,spring沒法自動的關閉session。 不推薦使用api

     this.getHibernateTemplate().getSessionFactory().getCurrentSession()從spring管理的sessionFactory中建立一個綁定線程的session.spring會根據該線程的執行狀況來自動判斷是關閉session仍是延遲關閉。這樣作能夠避免手動的管理實務,同時一個線程最多開啓和關閉一次session又能夠提升程序的性能。 極力推薦使用這種方法 session

     this.getHibernateTemplate().getSessionFactory().OpenSession。這種方法從spring管理的sessionFactory中建立一個session,此session不是線程綁定的。當執行完一個實務的時候自動關閉session.這種方法不用手動管理實務,可是同一個線程屢次的開啓和關閉session,浪費系統資源和影響執行效率,正常狀況下仍是不要用了。性能

相關文章
相關標籤/搜索