細心!用心!耐心!

          吾非文人,乃市井一俗人也,讀百卷書,跨江河千里,故申城一游; 一兩滴辛酸,三四年學業,五六點粗墨,七八筆買賣,九十道人情。

          BlogJava 聯系 聚合 管理
            1 Posts :: 196 Stories :: 10 Comments :: 0 Trackbacks

          Hibernate事務管理
            Hibernate是JDBC的輕量級封裝,本身并不具備事務管理能力,在事務管理層,Hibernate將其委托給底層的JDBC或者JTA,以實現事務的管理和調度。

            Hibernate的默認事務處理機制基于JDBCTransaction,也可以通過配置文件設定采用JTA作為事務管理實現:

             <hibernate-configuration>

                  <session-factory>

              ……

                       <property name = "hibernate.transaction.factory_class">

               net.sf.hibernate.transaction.JTATransactionFactory

              </session-factory>

             </hibernate-configuration>

          1、基于JDBC的事務管理

            Hibernate對于JDBC事務的封裝非常簡單。例如:

             session=sessionFactory.openSession();

             Transaction tx= session.beginTransaction();

             ……

             tx.commit();

          這里要注意的是,在sessionFactory.openSession()中,Hibernate會初始化數據庫連接,與此同時,將其 AutoCommit設為關閉狀態,這就是說,從SessionFactory獲得session,其自動提交屬性就已經被關閉了,下面的代碼不會對事務性數據庫產生任何效果。

             session=sessionFactory.openSession();

             session.save(user);

             session.close();

          如果要使得代碼真正作用到數據庫,必須顯示的調用Transaction指令

             session=sessionFactory.openSession();

             Transaction tx = session.beginTransaction();

             session.save(user);

             tx.commit();

             session.close();

          2、基于JTA的事務管理

            JTA提供了跨Session的事務管理能力,這是與JDBCTransaction最大的差異。

           JDBC事務由Connection管理,也就是說,事務管理實際上是在JDBC Connection中實現,事務周期限于Connection的生命周期之內,對于基于JDBC Transaction的Hibernate事務管理機制,事務管理在Session所依托的JDBC Connection中實現,事務周期限于Session的生命周期。

             JTA事務管理由JTA容器實現,JTA容器對當前加入事務的眾多Connection進行調度,實現其事務性要求,JTA的事務周期可橫跨多個JDBC Connection生命周期,同樣,對基于JTA事務的Hibernate,JTA事務橫跨多個Session。需要注意的是,參與JTA事務的 Connection需避免對事務管理進行干涉,如果采用JTA Transaction,就不應該再調用Hibernate的Transaction功能。
           
           

          posted on 2007-04-25 14:16 張金鵬 閱讀(4252) 評論(1)  編輯  收藏 所屬分類: 事務編程

          Feedback

          # re: Hibernate事務管理 2012-06-05 11:21 >
          >  回復  更多評論
            


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


          網站導航:
           
          主站蜘蛛池模板: 泰宁县| 浠水县| 汾阳市| 东莞市| 泰兴市| 娱乐| 南平市| 波密县| 宁夏| 台南县| 浑源县| 永定县| 株洲市| 丘北县| 白银市| 台南市| 祥云县| 弥勒县| 内江市| 鄢陵县| 东山县| 金湖县| 安新县| 南江县| 安陆市| 邯郸县| 景洪市| 济阳县| 河津市| 荣成市| 西贡区| 丹阳市| 沙坪坝区| 泰和县| 藁城市| 普陀区| 花垣县| 西安市| 渭源县| 铜陵市| 通州市|