Spring事務傳播機制和隔離級別

2021-07-30 08:27:10 字數 972 閱讀 4489

事務的傳播機制是指新增事務時的策略。

傳播機制共有以下幾種:

propagation_mandatory: 當前事務必須在乙個已有事務環境中執行, 否則丟擲異常

propagation_required:

propagation_requires_new:

propagation_nested: 

這三種傳播機制不管當前是否有事務, 都會新建乙個事務,區別是:

propagation_required:當前沒有事務就新建事務, 有的話就加入當前已有事務

propagation_requires_new:如果當前有事務, 則掛起當前事務

propagation_nested: 如果當前有事務, 則在巢狀事務內執行

propagation_supports:如果當前沒有事務,就以非事務的方式執行,如果有,則加入當前事務。

propagation_not_supported: 以非事務的方式執行, 如果當前有事務,將當前事務掛起。

propagation_never:以非事務方式執行, 如果當前有事務,則將事務掛起。

spring預設的事務傳播行為是propagation_required

事務隔離級別:乙個事務對資料庫的修改與並行的另乙個事務的隔離程度,是指併發情況下由於資料變動而造成的髒讀、幻讀、不可重複讀等等

幻想讀:t1讀取的結果集被t2修改了,引發原因是t2新插入了資料,避免方法為使用隔離級別:serializable

不可重複讀:t1讀取記錄的時候, t2修改了這條記錄,t1再次讀發現不一致。 避免方法為使用隔離級別:

repeatable read

髒讀: t1修改了記錄,還沒有提交,t2讀取了該記錄,此時t1回滾,t2讀取的資料無效,避免方法為使用隔離級別:

read committed

read uncommitted不可以避免以上三種情況

oracle預設的隔離級別是read committed

spring事務傳播和事務隔離

是最常用的,支援當前事務,若當前沒事務,就新建乙個事務。經測試,左側的事務註解必須得新增,右側的可加可不加 這倆insert事務合併成乙個事務了 支援當前事務,若當前沒事務,就以非事務方式執行。上圖 a調b,a有事務,b事務用supports,ab合併為乙個事務了。ab都會回滾 上圖 a調b,a無事...

Spring的事務隔離級別和傳播機制

spring 事務隔離級 spring 有五大隔離級別,其在transactiondefinition介面中定義。看原始碼可知,其默isolation default 底層資料庫預設級別 其他四個隔離級別跟資料庫隔離級別一致。1.isolation default 用底層資料庫的預設隔離級別,資料庫...

Spring的事務隔離級別和傳播機制

事務的acid 1.原子性 atomictiy 事務開始後所有操作 要麼全部做完 要麼全部不做 不可能停滯在中間環節 2.一致性 consistency 事務開始前和結束後 資料庫的完整性約束沒有被破壞 比如a向b轉賬 不可能a扣了錢 b卻沒收到 3.隔離性 isolation 同一時間 只允許乙個...