隨筆-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 阿里 閱讀(1545) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 延长县| 双辽市| 东明县| 叶城县| 大港区| 武定县| 九台市| 仁怀市| 岳池县| 新源县| 宁安市| 无棣县| 夏邑县| 上蔡县| 黎川县| 江北区| 三穗县| 巴青县| 老河口市| 诸城市| 苏尼特右旗| 绵阳市| 金华市| 乐亭县| 双流县| 威海市| 湾仔区| 白银市| 贵溪市| 泸西县| 射阳县| 蕲春县| 黄大仙区| 阜南县| 大足县| 壤塘县| 青川县| 兰州市| 乌苏市| 延安市| 黔东|