Spring之事務管理

2021-07-16 04:21:18 字數 1957 閱讀 5830

spring事務管理高層抽象主要包括3個介面

1. platformtransactionmanager   事務管理器

實現類 datasourcetransactionmanager   使用spring jdbc或ibatis進行持久化資料時使用

實現類 hibernatetransactionmanager      使用了 hibernate 進行持久化資料時使用

2.transactiondefinition    事務的定義資訊

1.事務的隔離級別(isolation)    

髒讀:  乙個事務讀取了另乙個事務改寫但還未提交的資料,如果這些資料被回滾,則讀取的這些資料是無效的

不可重複讀: 在同一事務中,多次讀取同一資料返回的結果不同

幻讀: 乙個事務讀取了幾行記錄後,另乙個事務插入資料,在後來的查詢中,第乙個事務就會發現部分之前沒有的記錄

為了避免以上問題,可設定事務的隔離級別

隔離級別:read_uncommited   級別最低,允許讀取還未提交的但改變了的資料

read_committed       事務提交後才能讀取,可防止髒讀   oracle預設

repeatable_read      對相同欄位的多次讀取一致 可防止 髒讀和不可重複讀  mysql 預設

serializable                 完全服從acid的隔離級別,事務按佇列進行,不可能併發。執行速度也最慢

spring 中還可以設定 default  相當於使用的資料庫的預設選擇

2.事務的傳播行為(propagation)

主要介紹3種

1.propagation_required     同乙個業務邏輯中執行的所有方法都放在乙個事務中。

2.propagation_requires_new   同乙個業務邏輯中執行的所有方法都放在各自的事務中。

3.propagation_nested               同一業務邏輯中執行的所有方法裡可以設定乙個儲存點,可以控制回滾的位置          

3.事務具體執行狀態   (可以獲取事務的屬性)

1.程式設計式事務管理     

在需要進行事務管理的service中使用 transactiontemplate (spring 事務管理的模板)

transactiontemplate依賴datasourcetransactionmanager(事務管理器的實現類)

datasourcetransactionmanager依賴datasource(需要資料庫連線池才能獲得連線,對事務進行管理)構造

在service中執行 transactiontemplate.execute(new transactioncallbackwithoutresult())  即可

此方法過於笨重.

2.宣告式事務管理   符合aop思想

1.基於transactionproxyfactorybean 方式   每個要進行事務管理的類 都需要    (一次配置只能針對乙個類,較繁瑣,一般不採用)

2.基於aspectj的xml方式

aspectj是乙個面向切面的框架 

這樣就可以讓所有的service中的方法在 異常時進行回滾了

3.基於註解方式 

處理的更有針對性,可以方便其他程式設計師閱讀,能知道這個類或者方法使用了事務,使用時得有一些注意事項

在需要事務的業務層類,或者方法上新增乙個@transactional的註解  即可

@transactional(propagation = propagation.required,isolation = isolation.default,readonly = true)

spring之事務管理

spring對事務的管理,有兩種方式,分別是程式設計式事務和宣告式事務,常用的是宣告式的事務,採用宣告式的事務包括配置檔案的方式和註解的配置方式 1採用配置檔案的方式 1.1類 public class user public class userdao 增加錢 public void addmon...

Spring核心之事務管理

事務的特性 併發事務帶來的問題 隔離級別 在mysql常用的儲存引擎中,只有innodb支援事務,所以這裡說的隔離級別指的是innodb下的事務隔離級別.隔離級別 讀資料一致性 更新丟失 髒讀不可重複讀 幻讀讀未提交 最低級別,只能保證不讀取物理上損壞的資料 讀已提交 語句級 可重複讀 事務級 可序...

Spring 學習筆記之事務管理

一 事務的特性 事務有四個特性 原子性 一致性 隔離性和永續性。二 spring事務管理只要包括的三個介面 1 platform transactionmanager 事務管理器 2 transactiondefinition 事務的定義資訊 隔離 傳播 超時 唯讀 3 transactionsta...