SPRING註解事務管理

2021-08-25 18:57:47 字數 2196 閱讀 9514

[quote]大家在使用spring的註解式事務管理時,對事務的傳播行為和隔離級別可能有點不知所措,下邊就詳細的介紹下以備方便查閱。

事物註解方式: @transactional

當標於類前時, 標示類中所有方法都進行事物處理

例子:@transactional

public class testservicebean implements testservice {}

當類中某些方法不需要事物時:

@transactional

public class testservicebean implements testservice

@transactional(propagation = propagation.not_supported)

public listgetall()

}事物傳播行為介紹:

@transactional(propagation=propagation.required)

如果有事務, 那麼加入事務, 沒有的話新建乙個(預設情況下)

@transactional(propagation=propagation.not_supported)

容器不為這個方法開啟事務

@transactional(propagation=propagation.requires_new)

不管是否存在事務,都建立乙個新的事務,原來的掛起,新的執行完畢,繼續執行老的事務

@transactional(propagation=propagation.mandatory)

必須在乙個已有的事務中執行,否則丟擲異常

@transactional(propagation=propagation.never)

必須在乙個沒有的事務中執行,否則丟擲異常(與propagation.mandatory相反)

@transactional(propagation=propagation.supports)

如果其他bean呼叫這個方法,在其他bean中宣告事務,那就用事務.如果其他bean沒有宣告事務,那就不用事務.

事物超時設定:

@transactional(timeout=30) //預設是30秒

事務隔離級別:

@transactional(isolation = isolation.read_uncommitted)

讀取未提交資料(會出現髒讀, 不可重複讀) 基本不使用

@transactional(isolation = isolation.read_committed)

讀取已提交資料(會出現不可重複讀和幻讀)

@transactional(isolation = isolation.repeatable_read)

可重複讀(會出現幻讀)

@transactional(isolation = isolation.serializable)

序列化@transactional(propagation=propagation.nested)

@transactional (propagation = propagation.required,readonly=true) //readonly=true唯讀,不能更新,刪除

@transactional (propagation = propagation.required,timeout=30)//設定超時時間

@transactional (propagation = propagation.required,isolation=isolation.default)//設定資料庫隔離級別

@transactional(norollbackfor=exception.class)//指定不回滾,遇到執行期例外

@transactional(rollbackfor=exception.class) //指定回滾,需要捕獲的例外

mysql: 預設為repeatable_read級別

sqlserver: 預設為read_committed

髒讀 : 乙個事務讀取到另一事務未提交的更新資料

不可重複讀 : 在同一事務中, 多次讀取同一資料返回的結果有所不同, 換句話說,

後續讀取可以讀到另一事務已提交的更新資料. 相反, "可重複讀"在同一事務中多次

讀取資料時, 能夠保證所讀資料一樣, 也就是後續讀取不能讀到另一事務已提交的更新資料

幻讀 : 乙個事務讀到另乙個事務已提交的insert資料[/quote]

spring註解事務傳播行為

在 service 類前加上 transactional 宣告這個 service 所有方法需要事務管理。每乙個業務方法開始時都會開啟乙個事務。spring 預設情況下會對執行期例外 runtimeexception 進行事務回滾。這個例外是 unchecked 如果遇到 checked 意外就不回...

spring宣告式事務管理(註解實現)

spring事務管理分為程式設計式事務管理和宣告式事務管理,後者又分為註解式和xml配置式,今天主要講簡單的註解式,先看beans4.xml,這是spring配置檔案,放在src源資料夾下 看配置檔案就知道要用哪些包,dbcp,mysql連線,spring核心包,然後註解事務宣告主要分三步,1.宣告...

spring 註解驅動 事務管理器

需要匯入的依賴 com.mchange c3p0 0.9.5.5 org.springframework spring aspects 5.2.5.release org.springframework spring jdbc 5.2.4.release 使用jdbctemplate 運算元據庫 u...