2023-01-18
一、Spring宣告式事務管理
1、事務四大特征(ACID)
(1)原子性
(2)一致性
(3)隔離性
(4)持久性
2、事務三種行為
(1)開啟事務:connection.setAutoCommit(False)
(2)提交事務:connection.commit()
(3)回滾事務:connection.rollback()
二、Spring中支持事務管理
1、編程式事務管理
(1)獲取資料庫連接Connection物件
(2)取消事務的自動提交(開啟事務)
(3)執行操作
(4)正常完成操作時手動提交事務
(5)執行失敗時回滾事務
(6)關閉相關資源
2、宣告式事務管理(使用AOP管理事務)
先橫向提取(事務管理代碼),再動態織入
三、使用宣告式事務管理
注:如果不使用事務管理代碼,會出現以下情況:
同一個業務中,會出現區域成功及區域失敗的現象(不正常),
1、基本使用步驟
(1)添加支持jar包
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>5.3.10</version> </dependency>
(2)撰寫組態檔
①配置事務管理器
②開啟事務注解支持
<!-- 配置事務管理器--> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean> <!-- 開啟事務注解支持--> <tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>
(3)在需要事務管理的業務方法上添加注解@Transational
注:添加宣告式事務管理之后,獲取是代理物件,代理物件不能轉換為目標物件(實作類)
四、Spring宣告式事務管理屬性
1、事務傳播行為(Propagation)
當事務方法被另一個事務方法呼叫時,必須指定事務應該如何傳播
如:執行事務方法method()1(事務x)之后,呼叫事務方法method2()(事務y),此時需要設定method()2方法的事務傳播行為,
(1)事務的傳播行為
①REQUIRED:如果有事務在運行,當前的方法就在這個事務內運行;否則就啟動一個新的事務,并在自己的事務內運行
②REQUIRED_NEW:當前的方法必須啟動新事務,并在自己的事務內運行;如果有事務正在運行,應該將它掛起,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/542209.html
標籤:其他
