1. 程式人生 > 實用技巧 >Spring-13-宣告式事務

Spring-13-宣告式事務

13. 宣告式事務

13.1 回顧事務

  • 把一組業務當成一個業務,要麼都成功,要麼都失敗
  • 事務在專案開發中十分重要,涉及到資料的一致性
  • 確保完整性和一致性;

事務的ACID原則:

  • 原子性
  • 一致性
  • 隔離性:多個業務操作同一個資源,不互相影響!
  • 永續性:事務一旦提交,無論系統發生什麼問題,結果都不會收到影響。

13.2 Spring的事務管理

  • 宣告式事務:AOP
  • 程式設計式事務:需要再程式碼中,進行事務的管理

思考:為什麼需要事務?

  • 如果不配置事務,可能存在資料提交不一致的情況;
  • 如果我們不在Spring中配置宣告式事務,則需要在程式碼中手動配置事務!

事務配置:

<!--配置宣告式事務-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"/>
</bean>

<!--結合AOP實現事務的織入-->
<!--第一步 配置事務通知(類)-->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
    <!--給那些方法配置事務-->
    <!--配置事務的傳播特性:propagation-->
    <tx:attributes>
        <tx:method name="*"/>
    </tx:attributes>
</tx:advice>

<!--第二步,配置事務切入-->
<aop:config >
    <aop:pointcut id="txPointCut" expression="execution(* com.kuang.mapper.*.*(..))"/>
    <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointCut"/>
</aop:config>