1. 程式人生 > >Spring 事務傳播機制

Spring 事務傳播機制

簡述:

spring的事務傳播(transaction propagation)分為

REQUIRED

SUPPORTED

NOT_SUPPORTED

REQUIRES_NEW

MANDATORY

NEVER

NESTED

PROPAGATION_NESTED

如圖所示


下面簡述一下文件上的說明,




1. REQUIRED

如果當前事務上下文中存在事務,則使用當前事務,否則新建一個事務


2. SUPPORTED

如果當前事務上下文中有一個事務,那麼使用上下文中的事務;如果沒有,那麼按照沒有事務的方式執行


3. NOT_SUPPORTED

無論當前事務上下文中有沒有事務,都會按照無事務的方式執行


4. REQUIRES_NEW

無論當前事務上下文中有沒有事務,都會開啟一個新的事務

事務間沒有依賴關係,四種情況都有可能出現

A成功B失敗,A失敗B成功,A成功B失敗,A失敗B失敗


5. MANDATORY

如果當前事務上下文中有一個事務,那麼使用事務上下文中的事務;如果沒有, 那麼丟擲一個IllegalTransactionStatException


6. NEVER

如果當前事務上下文中有一個事務,就會丟擲IllegalTransactionStatException


7. NESTED

在當前事務上下文的事務中增加一個儲存點,如果內嵌事務發生回滾,只會回滾內嵌事務,不會回滾外層事務 與REQUIRES_NEW的區別是, 內嵌事務信賴A, 不可能出現A失敗B成功