刘耀文

刘耀文

java开发者
github

Spring事務的傳播行為

事務傳播#

事務傳播的幾種情況#

序號事務的傳播機制說明備註
1required如果當前存在事務,就加入該事務。 如果當前沒有事務,就創建一個新事務。 這是最常用的設置。只創建一個事務。
2requires_new不管是否存在事務,都創建一個新的、自己的事務。舊事務先掛起,再創建新事務新事務 執行完並提交,接著,繼續執行 舊事務最後提交。1、每次都創建一個新的事務。 2、創建 新事務 前,舊事務 先掛起。 3、先執行的方法後提交事務,後執行的方法先提交事務。 4、舊事務 的回滾,不會影響 新事務 的提交。
3nested如果當前存在事務,則 嵌套事務與外面事務使用同一事務,不同的是 嵌套內部開啟一個新的保存點( savepoint ),執行有兩種情況: (1)當嵌套內部 發生回滾,不影響外面事務的正常提交。 (2)當外面事務 發生回滾,則嵌套內的事務要回滾。 (3)未發生異常時,則嵌套內的事務和外部事務一起,一個整體提交。如果當前沒有事務,則執行與 required 類似的操作。皮尚在,毛被燒掉。 皮之不存,毛將焉附。
4supports支持當前事務。 如果當前存在事務,就加入該事務, 如果當前不存在事務,就以非事務執行。supports 不會創建事務。
5not_supported不支持事務。 如果當前存在事務,就把當前事務 掛起。 如果當前沒有事務,就以非事務執行。
6mandatory強制、必須使用事務。 如果當前 已經存在事務,就加入該事務, 如果當前不存在事務,就 拋出異常1、mandatory 不會創建事務。 2、mandatory 執行的前提是已經存在事務。
7never禁止事務 。 如果當前存在事務,則 拋出異常, 如果當前沒有事務,以非事務方式執行,必須在一個沒有事務中執行,否則報錯。

事務傳播的幾種情況理解#

行為類型
有就加入,沒有就算了supports
外面有沒有都要是新事務requires_new
外面有就加入,沒有就新事務required
外面有就加入,保存點加入,沒有就新事物nested
不要事務,外面有先掛起not_supported
要求外面有事務(不滿足異常)mandatory
要求外面沒有事務(不滿足異常)mandatory

線程綁定(同步管理)#

此文由 Mix Space 同步更新至 xLog
原始鏈接為 https://me.liuyaowen.club/posts/default/Spring


載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。