隨筆-109  評論-187  文章-25  trackbacks-0

          ??? <bean id="transactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"

          ?????? ? abstract="true">

          ?????? <property name="transactionManager" ref="transactionManager"/>

          ?????? <property name="transactionAttributes">

          ?????????? <props>

          ????????????? <prop key="insert*">PROPAGATION_REQUIRED</prop>

          ????????????? <prop key="update*">PROPAGATION_REQUIRED</prop>

          ????????????? <prop key="delete*">PROPAGATION_REQUIRED</prop>

          ????????????? <prop key="change*">PROPAGATION_REQUIRED</prop>

          ????????????? <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>

          ??? ?????? </props>

          ?????? </property>

          ??? </bean>

          1

          一旦你決定要用 AOP 來做 SERVICE 內部每個方法的事務處理,那么在 DAO 層內部最好不要從自己去 catch 異常,因為在 SERVICE 里面可能多次調用 DAO ,一旦多次調用,你其中一個方法捕獲了異常就沒有辦法保證事務回滾,所以即使你捕獲異常為了調試,一定要在 CATCH 方法中一定還要拋出一個異常來,否則無法保證事務

          ?

          2

          一旦決定要用 spring aop 方式來處理事務,一定要不采用 JDOtemplate ,或者 HIBERNATE TEMPALATE 內部類的方式,因為那樣他們自己去管理事務,一旦在內部類中事務回滾,無法保證其他的 DAO 中事務回滾

          ?

          3

          1、? PROPAGATION_REQUIRED -- 支持當前的事務,如果不存在就創建一個新的。這是最常用的選擇。
          2
          PROPAGATION_SUPPORTS -- 支持當前的事務,如果不存在就不使用事務。
          3
          PROPAGATION_MANDATORY -- 支持當前的事務,如果不存在就拋出異常。
          4
          PROPAGATION_REQUIRES_NEW -- 創建一個新的事務,并暫停當前的事務(如果存在)。
          5
          PROPAGATION_NOT_SUPPORTED -- 不使用事務,并暫停當前的事務(如果存在)。
          6
          PROPAGATION_NEVER -- 不使用事務,如果當前存在事務就拋出異常。
          7
          PROPAGATION_NESTED -- 如果當前存在事務就作為嵌入事務執行,否則與 PROPAGATION_REQUIRED 類似。

          ?

          ?

          4 < prop key="change*">PROPAGATION_REQUIRED</prop>

          ? 你可以在 PROPAGATION_REQUIRE 之后指定拋出什么樣的異常事務才回滾,或者事務的隔離方式是什么等等都可以配置如 <prop key="change*">PROPAGATION_REQUIRED,readOnly,-PetClinicException</prop>

          posted on 2006-05-17 17:37 小小程序程序員混口飯吃 閱讀(1284) 評論(0)  編輯  收藏 所屬分類: java
          主站蜘蛛池模板: 花垣县| 汪清县| 云安县| 凭祥市| 清河县| 株洲市| 东乡族自治县| 永嘉县| 织金县| 昆明市| 重庆市| 阳原县| 宽城| 祁连县| 祁东县| 合肥市| 巍山| 饶平县| 闵行区| 吉木萨尔县| 池州市| 永德县| 肇源县| 邻水| 宣化县| 黑河市| 恩施市| 平凉市| 开鲁县| 泗洪县| 郸城县| 吴川市| 蕉岭县| 南川市| 西昌市| 喜德县| 巨野县| 南安市| 涟水县| 灵寿县| 石泉县|