1. 程式人生 > >Spring 中transactionAttributes的合理配置

Spring 中transactionAttributes的合理配置

    <!--配置事務攔截器   -->
    <bean id="txIntercept"
        class="org.springframework.transaction.interceptor.TransactionInterceptor">
        <property name="transactionManager" ref="txManage" />
        <property name="transactionAttributes">
            <props>
                <prop key="*">PROPAGATION_REQUIRED,readonly, -Exception</prop>
            </props>
        </property>

    </bean>

transactionAttributes的屬性的意義:

PROPAGATION_REQUIRED--支援當前事務,如果當前沒有事務,就新建一個事務。這是最常見的選擇。

(適用於處理一個或多個交叉insert,update,delete)
PROPAGATION_SUPPORTS--支援當前事務,如果當前沒有事務,就以非事務方式執行。

(適用於處理一個或多個交叉insert,update,delete,query) 
PROPAGATION_MANDATORY--支援當前事務,如果當前沒有事務,就丟擲異常。

適用於檢測query是否存在insert,update,delete)  
PROPAGATION_REQUIRES_NEW--新建事務,如果當前存在事務,把當前事務掛起。
PROPAGATION_NOT_SUPPORTED--以非事務方式執行操作,如果當前存在事務,就把當前事務掛起。
PROPAGATION_NEVER--以非事務方式執行,如果當前存在事務,則丟擲異常。

(適用於全query) 
PROPAGATION_NESTED--如果當前存在事務,則在巢狀事務內執行。如果當前沒有事務,則進行與PROPAGATION_REQUIRED類似的操作。

-Exception ,這個代表丟擲異常,則該方法回滾    -代表回滾       +代表提交  readonly ,一般用於查詢的方法,優化作用.