一、spring事務的傳播機制(hibernatetransactionmanager)
1)、如果當前沒有事務,就新建乙個事務;如果已存在乙個事務,就加入到這個事務中。
2)、supports" /> 支援當前事務,如果當前沒有事務,以非事務方式執行。
3)、mandatory" />使用當前事務,如果當前沒有事務,則丟擲異常。
4)、requires_new
" />新建事務,如果當前存在事務,則把當前事務掛起。
5)、not_supported
" />以非事務方式執行,如果當前存在事務,則把當前事務掛起。
6)、never
" />以非事務方式執行,如果當前存在事務,則丟擲異常。
7)、nested
" />如果當前存在事務,則在巢狀事務內執行。如果當前沒有事務,則執行 與
propagation_required
類似的操作。
二、spring事務隔離級別(isolation level)
1)、serializable: 事務序列執行,提供嚴格的事務隔離,它要求事務序列化執行,事務只能乙個接著乙個地執行,不能併發執行,資源消耗最大。
2)、repeatable read:可重複讀取,保證了乙個事務不會修改已經由另乙個事務讀取但未提交(回滾)的資料,避免了「髒讀取」和「不可重複讀取」的情況,但是帶來了更多的效能損耗。
3)、read committed:授權讀取,大多數主流資料庫的預設事務等級,保證了乙個事務不會讀到另乙個並行事務已經修改但未提交的資料,避免了「髒讀取」。
4)、read uncommitted:未授權讀取,保證讀取過程中不會讀到方法資料,隔離級別在於處理多事務併發問題。該隔離級別可以通過 「排他寫鎖」實現。事務隔離的最低級別,僅可保證不讀取物理損壞的資料。與read committed 隔離級相反,它允許讀取已經被其它使用者修改但尚未提交確定的資料。
5)、隔離級別 更新丟失 髒讀取 重複讀取 幻讀
read uncommitted n y y y
read committed n n y y
repeatable read n n n y
serializable n n n n
Spring事務傳播機制和隔離級別
事務的傳播機制是指新增事務時的策略。傳播機制共有以下幾種 propagation mandatory 當前事務必須在乙個已有事務環境中執行,否則丟擲異常 propagation required propagation requires new propagation nested 這三種傳播機制不...
spring事務傳播和事務隔離
是最常用的,支援當前事務,若當前沒事務,就新建乙個事務。經測試,左側的事務註解必須得新增,右側的可加可不加 這倆insert事務合併成乙個事務了 支援當前事務,若當前沒事務,就以非事務方式執行。上圖 a調b,a有事務,b事務用supports,ab合併為乙個事務了。ab都會回滾 上圖 a調b,a無事...
Spring的事務隔離級別和傳播機制
spring 事務隔離級 spring 有五大隔離級別,其在transactiondefinition介面中定義。看原始碼可知,其默isolation default 底層資料庫預設級別 其他四個隔離級別跟資料庫隔離級別一致。1.isolation default 用底層資料庫的預設隔離級別,資料庫...