隨筆-4  評論-1  文章-0  trackbacks-0
          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 2008-07-16 15:48 阿里 閱讀(1544) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 九寨沟县| 抚远县| 博客| 盈江县| 手游| 巫溪县| 尚志市| 开鲁县| 北票市| 绵阳市| 比如县| 图木舒克市| 上栗县| 亳州市| 永泰县| 正镶白旗| 阿鲁科尔沁旗| 婺源县| 宝清县| 浦江县| 焉耆| 新泰市| 晋城| 博湖县| 盐源县| 兴安县| 衡水市| 纳雍县| 长沙市| 辽宁省| 荔浦县| 新竹县| 金寨县| 丘北县| 抚宁县| 三明市| 分宜县| 阳信县| 阿坝县| 当雄县| 疏勒县|