getHibernateTemplate().getSessionFactory().getCurrentSession()

          區別

          getHibernateTemplate().getSessionFactory().openSession()

          getHibernateTemplate().getSessionFactory().getCurrentSession()

          ?

          ?

          getCurrentSession ()?? 使用當前的 session

          openSession()???????? 重新建立一個新的 session

          ?

          -------------------------

          SessionFactory.getCurrentSession() Hibernate 應用獲取 Session 的常用方法。在調用該方法時, Hibernate 會從 interface CurrentSessionContext 獲取當前的 Session ,這是 Hibernate 在不同組件中傳遞 Session 的方法。

          ?

          CurrentSessionContext 有三個實現,分別是 ThreadLocalSessionContext JTASessionContext ManagedSessionContext 。

          ?

          ThreadLocalSessionContext Session 與當前線程綁定,是使用較多的一種方案;

          JTASessionContext Session JTA 事務綁定,在 JTA 環境中使用;

          ?

          ManagedSessionContext 使應用可以通過 bind() unbind() 方法控制 Session 的綁定,主要在有 Conversation 的應用中使用(如果使用 ManagedSessionContext ,開發人員要做的事情還是很多的)。

          ?

          CurrentSessionContext 實現的選擇可以通過 hibernate.current_session_context_class 來配置。

          ?

          另一種更常見的創建 Session 的方法是 openSession() 。

          ?

          ?

          openSession() getCurrentSession() 有何不同和關聯呢?

          ?

          SessionFactory 啟動的時候, Hibernate 會根據配置創建相應的 CurrentSessionContext ,在 getCurrentSession() 被調用的時候,實際被執行的方法是 CurrentSessionContext.currentSession() 。在 currentSession() 執行時,如果當前 Session 為空, currentSession 會調用 SessionFactory openSession 。所以 getCurrentSession() 對于 Java EE 來說是更好的獲取 Session 的方法。

          ?

          再說 ManagedSessionContext ,它提供了更靈活的綁定 Session 的方式,但是使用起來去不簡單。

          Hibernate CaveatEmptor 實例中有關于使用 ManagedSessionContext 的例子,但更好的選擇是使用 Seam Framework

          ?

          posted on 2009-03-29 23:03 luofeng225 閱讀(2708) 評論(0)  編輯  收藏 所屬分類: Spring

          <2009年3月>
          22232425262728
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          導航

          統計

          公告

          我曾經聽到這么一個故事: 一個年輕的程序員問一個老程序員(一個比較牛逼的公司的CTO) 年輕程序員: 你為什么這么牛X., 就好像沒有你不會的。老程序員: 積累的。年輕程序員: 怎么才能積累到您的程度呢。我每天都在積累。但是似乎都沒有感覺到進步。老程序員: 我從20歲開始做到了一件事情,直到今天,而且盡可能地保證不間斷。年輕程序員: 到底是什么? 老程序員: 我每天保證自己有2個小時在學習新的東西。

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          文章分類

          相冊

          收藏夾

          Java Website

          java技術博客

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 淮南市| 田东县| 嘉峪关市| 满城县| 南昌市| 道孚县| 加查县| 德清县| 泰和县| 福清市| 治多县| 临潭县| 海南省| 清涧县| 遂溪县| 万宁市| 灌南县| 兴文县| 黄浦区| 承德市| 平南县| 日照市| 呼图壁县| 郑州市| 达拉特旗| 长武县| 清苑县| 巫溪县| 竹北市| 郴州市| 都匀市| 车险| 翁源县| 大埔区| 乌什县| 高碑店市| 太和县| 洞口县| 星子县| 三河市| 沧州市|