Spring-宣告式事務
阿新 • • 發佈:2020-09-07
宣告式事務
目錄
1. 事務回顧
-
ACID原則:
- 原子性
- 一個事務內的操作,要麼同時成功,要麼同時失敗
- 一致性
- 一個事務必須使資料庫從一個一致性狀態變換到另一個一致性狀態
- 與原子性的區別: 一致性是基礎,也是最終目的,其他三個特性(原子性、隔離性和永續性)都是為了保證一致性的
- 隔離性
- 多個業務可能操作同一個資源, 防止資料損壞
- 永續性
- 事務一旦提交, 無論系統發生什麼問題, 結果都不會再被影響, 被持久化的寫到儲存器中!
- 原子性
-
把一組業務當成一個業務來做, 要麼都成功, 要麼都失敗
-
事務在專案開發中, 十分的重要, 設計到資料的一致性問題, 不能馬虎
-
確保完整性和一致性
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="add" propagation="REQUIRED"/> <tx:method name="delete" propagation="REQUIRED"/> <tx:method name="update" propagation="REQUIRED"/> <!--query開頭的方法,只能對資料庫進行查詢操作--> <tx:method name="query" read-only="true"/> <!--所有方法--> <tx:method name="*" propagation="REQUIRED"/> </tx:attributes> </tx:advice> <!--設定事務切入--> <aop:config> <aop:pointcut id="txPointCut" expression="execution(* com.wang.mapper.* .*(..))"/> <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointCut"/> </aop:config>