spring中的事務隔離級別和傳播行爲

spring中的事務隔離級別

spring中的事務隔離級別有5種。分別是:

1、ISOLATION_DEFAULT
使用數據庫默認的事務隔離級別。

2、ISOLATION_READ_UNCOMMITTED (未提交讀)
這是事務最低的隔離級別,允許讀取尚未提交的修改的數據。
這種隔離級別會產生髒讀,不可重複讀和幻像讀。

3、ISOLATION_READ_COMMITTED (提交讀)
保證一個事務修改的數據提交後才能被另外一個事務讀取。
這種事務隔離級別可以避免髒讀出現,但是可能會出現不可重複讀和幻像讀。

4、ISOLATION_REPEATABLE_READ (可重複讀)
對相同字段的多次讀取的結果是一致的,除非數據被當前事務自生修改。
這種事務隔離級別可以防止髒讀,不可重複讀。但是可能出現幻像讀。

5、ISOLATION_SERIALIZABLE (序列化)
完全服從acid隔離原則,這是花費最高代價但是最可靠的事務隔離級別。
確保不發生髒讀、不可重複讀、和幻讀,但執行效率最低。

spring中的事務傳播行爲

Spring在TransactionDefinition接口中規定了7種類型的事務傳播行爲,它們規定了事務方法和事務方法發生嵌套調用時事務如何進行傳播,分別是:

1、PROPAGATION_REQUIRED

如果當前沒有事務,就新建一個事務,如果已經存在一個事務中,加入到這個事務中。這是最常見的選擇。

2、PROPAGATION_SUPPORTS

支持當前事務,如果當前沒有事務,就以非事務方式執行。

3、PROPAGATION_MANDATORY

使用當前的事務,如果當前沒有事務,就拋出異常。

4、PROPAGATION_REQUIRES_NEW

新建事務,如果當前存在事務,把當前事務掛起。

5、PROPAGATION_NOT_SUPPORTED

以非事務方式執行操作,如果當前存在事務,就把當前事務掛起。

6、PROPAGATION_NEVER

以非事務方式執行,如果當前存在事務,則拋出異常。

7、PROPAGATION_NESTED

如果當前存在事務,則在嵌套事務內執行。如果當前沒有事務,則執行與PROPAGATION_REQUIRED類似的操作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章