細心!用心!耐心!

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

          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 張金鵬 閱讀(4245) 評論(1)  編輯  收藏 所屬分類: 事務編程

          Feedback

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


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


          網站導航:
           
          主站蜘蛛池模板: 杭锦后旗| 抚州市| 阿图什市| 民勤县| 东丰县| 泰州市| 翼城县| 奇台县| 临桂县| 杨浦区| 米脂县| 盐源县| 台东县| 安溪县| 玉林市| 沈阳市| 瑞昌市| 广元市| 临洮县| 阳城县| 盐城市| 贵溪市| 保康县| 肇庆市| 普安县| 荥经县| 乐至县| 彭山县| 县级市| 大冶市| 醴陵市| 宁化县| 龙岩市| 丰台区| 澄城县| 含山县| 沽源县| 咸丰县| 陵川县| 洪江市| 临夏市|