posts - 156,  comments - 601,  trackbacks - 0

          Spring聲明式事務功能應該是大家應用Spring中使用的最多的功能之一了,的確該功能極大的簡化了大家對數據庫操作的。目前Spring支持的聲明式事務有兩個配置方式,一種是XML配置方式,另一種是注解方式


          針對配置這塊,XML配置同學們會覺得比較麻煩,特別是針對事務屬性的配置,所以補充一下本塊配置說明,特分享給大家,希望對大家有幫助。

          下面是SpringXML配置事務比較常用的方式,也是我們這邊事務XML配置事務的使用方式,本文以該種配置為例,進行說明。

              <bean id="transactionInterceptor"
                  class
          ="org.springframework.transaction.interceptor.TransactionInterceptor">
                  
          <property name="transactionManager" ref="transactionManager" />
                  
          <property name="transactionAttributes">
                      
          <props>
                          
          <prop key="query*">PROPAGATION_REQUIRED,readOnly</prop>
                          
          <prop key="is*">PROPAGATION_REQUIRED,readOnly</prop>
                          
          <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
                          
          <prop key="get*">PROPAGATION_SUPPORTS,readOnly</prop>
                          
          <prop key="load*">PROPAGATION_REQUIRED,readOnly</prop>
                          
          <prop key="*">PROPAGATION_REQUIRED</prop>
                      
          </props>
                  
          </property>
              
          </bean>


          配置詳解說明如下:

           TransactionInterceptor 是聲明式事務攔截器。可以由Spring AOP攔截器進行回調。

           transactionAttributes 是事務屬性的配置說明,也是大家覺得比較不好配置,不太容易記憶的地方

          它的配置規則如下:因為都有前綴標識,所以順序可以修改。

          (PROPAGATION_NAME,ISOLATION_NAME,readOnly,timeout_NNNN,+Exception1,-Exception2)

            PROPAGATION_REQUIRED 事務的傳播級別(PROPAGATION_開頭). 可設置值說明如下:

          PROPAGATION_REQUIRED 使用當前事務,如果當前沒有事務,則開啟新事務

          PROPAGATION_SUPPORTS 當前有事務則用,沒有事務則不用

          PROPAGATION_MANDATORY 當前有事務就用,沒有事務則報錯(必須要用事務)

          PROPAGATION_REQUIRES_NEW 當前有事務則掛起原事務,新啟事務(必開新事務)

          PROPAGATION_NOT_SUPPORTED 不使用事務,如果當前有事務,則掛起事務

          PROPAGATION_NEVER 不能有事務,如果當前有事務,則報錯(必須沒有事務)

          PROPAGATION_NESTED PROPAGATION_REQUIRED

           

           ISOLATION_DEFAULT 事務隔離級別(ISOLATION_開頭)

          ISOLATION_DEFAULT  使用數據庫默認事務

          ISOLATION_READ_UNCOMMITTED

          ISOLATION_READ_COMMITTED

          ISOLATION_REPEATABLE_READ

          ISOLATION_SERIALIZABLE

           readOnly

          如果設置,則表示只讀事務,如果不設置,則表示讀來事務

          TIMEOUT_DEFAULT 事務超時設置(timeout_ 開頭)

          單位是秒。 例如 timeout_20 則表示事務超時時間是20秒。

           +Exception 表示遇到該異常時,執行回滾

           –Exception 表示遇到該異常時,不執行加滾

          transactionManager 是事務管理器,針對不同的持久層,事務都會提供不同的實現。其接口都是org.springframework.transaction.PlatformTransactionManager

           

          XML配置事務方式的優點就是不用改任何代碼,希望此份配置詳解可以對大家有幫助
          posted on 2011-06-23 13:25 x.matthew 閱讀(4389) 評論(3)  編輯  收藏 所屬分類: Spring|Hibernate|Other framework
          主站蜘蛛池模板: 辽阳县| 广安市| 高邑县| 靖边县| 会宁县| 云和县| 鹤壁市| 广南县| 汝城县| 凤庆县| 建宁县| 阳西县| 石屏县| 吕梁市| 清镇市| 怀柔区| 锡林郭勒盟| 乐平市| 济宁市| 洪泽县| 望都县| 天柱县| 达州市| 信丰县| 靖州| 自治县| 菏泽市| 寻甸| 达州市| 张家口市| 铜梁县| 扎鲁特旗| 剑河县| 阿拉善左旗| 曲周县| 常宁市| 观塘区| 金湖县| 瑞安市| 汤原县| 黄石市|