為業務層新增宣告式事務

2021-08-29 05:36:10 字數 1529 閱讀 3680

可以採用mybatis控制事務

事務應該在業務邏輯層控制

硬編碼方式,**繁瑣,且破壞分層,**不易維護

可以採用aop的方式實現

spring提供了宣告式事務支援

propagation:事務傳播機制

required(預設值)

requires_new 、mandatory、nested

supports

not_supported、never

1.propagation:事務傳播機制。

(1.)required:預設值,表示如果存在乙個事務,則支援當前事務;如果當前沒有事務,則開啟乙個新的事務。

(2.)requires_new:表示總是開啟乙個新的事務。如果乙個事務已經存在,則將這個存在的事務掛起,開啟新事務執行該方法。

(3.)mandatory:表示如果存在乙個事務,則支援當前事務;如果當前沒有乙個活動的事務,則丟擲異常。

(4.)nested:表示如果當前存在乙個活動的事務,則建立乙個事務作為當前事務的巢狀事務執行;如果沒有當前事務,該取值與required相同。

(5.)supports:表示如果存在乙個事務,則支援當前事務;如果當前沒有事務,則按非事務方式執行。

(6.)not_supported:表示總是以非事務方式執行。如果乙個事務已經存在,則將這個存在的事務掛起,然後執行該方法。

(7.)never:表示總是以非事務方式執行。如果當前存在乙個活動的事務,則丟擲異常。

2.isolation:事務隔離等級

(1.)default:預設值,表示使用資料庫預設的事務隔離級別。

(2.)read_uncommitted:未提交讀。

(3.)read_committed:提交讀。

(4.)repeatable_read:可重複讀。

(5.)serializable:序列讀。

3.timeout:事務超時時間,允許事務執行的最長時間,以秒為單位。預設值為-1,表示不超時

4.read-only:事務是否為唯讀,預設值為false

5.rollback-for:設定能夠觸發回滾的異常型別

spring預設只在丟擲runtime exception時才標識事務回滾

可以通過全限定類名指定需要回滾事務的異常,多個類名用逗號隔開

6.no-rollback-for:設定不觸發回滾的異常型別

spring預設checked exception不會觸發事務回滾

可以通過全限定類名指定不需回滾事務的異常,多個類名用英文逗號隔開

1:匯入tx和aop命名空間

引入properties檔案,然後定義事務管理器

classpath:database.properties

接著通過tx:advice標籤配置事務增強,繫結事務管理器並針對不同的方法定義事務規則。

配置切面,將事務增強與方法切入點組合。

--定義切面-->

宣告式事務

宣告式事務編輯以方法為單位,進行事物控制 丟擲異常,事物回滾。最小的執行單位為方法。決定執行成敗是通過是否丟擲異常來判斷的,丟擲異常即執行失敗 宣告式事務 declarative transaction management 是spring提供的對程式事務管理的方式之一。spring的宣告式事務顧名...

宣告式事務

開啟事務,就需要在spring的配置檔案中配置事務管理器 id datasourcetransactionmanager class org.springframework.jdbc.datasource.datasourcetransactionmanager name datasource re...

宣告式事務

程式設計式事務 指的是由程式設計師編寫事務控制 包含事務的提交與回滾等。宣告式事務 事務控制 已經由spring寫好,程式設計師只需要宣告出哪些方法需要進行事務控制和如何進行事務控制。宣告式事務都是針對serviceimpl類下的方法的 事務管理器是基於通知 advice 的 service介面 p...