spring 事務整理

首先 Spring 的事物分爲7種,以下:spa



ROPAGATION_REQUIRED -- 支持當前事務,若是當前沒有事務,就新建一個事務。這是最多見的選擇。
PROPAGATION_SUPPORTS -- 支持當前事務,若是當前沒有事務,就以非事務方式執行。
PROPAGATION_MANDATORY -- 支持當前事務,若是當前沒有事務,就拋出異常。
PROPAGATION_REQUIRES_NEW -- 新建事務,若是當前存在事務,把當前事務掛起。
PROPAGATION_NOT_SUPPORTED -- 以非事務方式執行操做,若是當前存在事務,就把當前事務掛起。
PROPAGATION_NEVER -- 以非事務方式執行,若是當前存在事務,則拋出異常。
PROPAGATION_NESTED -- 若是當前存在事務,則在嵌套事務內執行。若是當前沒有事務,則進行與PROPAGATION_REQUIRED相似的操做。
事務


ROPAGATION_REQUIRED:最經常使用的事務,若是外部事務也是ROPAGATION_REQUIRED的話,感受它們更像是組成了一條線,簡單的說 就是外部事務沒有的時候 他就創建一個新事務;若是外部事務存在的時候,他就加入外部事務it


PROPAGATION_NESTED :這個簡單的說就是  若是PROPAGATION_NESTED已經在一個事務中,那麼在它將嵌套在這個事務中執行,這個時候PROPAGATION_NESTED事務是外部事務的一個子事務,當PROPAGATION_NESTED事務開始執行的時候,會設立一個save point,當這個PROPAGATION_NESTED事務失敗 ,事務將會滾到這個save point點,在外部事務提交和回滾的時候會隨着外部事務一塊兒提交或着回滾; 若是外部不存在事務就跟ROPAGATION_REQUIRED同樣io


PROPAGATION_REQUIRES_NEW當前已經存在事務 那麼新建一個單獨的事務,是一個完整的事務,這個事務獨立於外部事務本身的commit,rollback 不受外部事務的影響,當它開始運行時 外部事務將掛起。內部事務結束 外部事務繼續執行。異常

相關文章
相關標籤/搜索