spring 事務管理 2(spring的事務方法鑲嵌使用,事務邊界和傳播性)沒完

 許多人認爲spring一個事務方法不該該調用另外一個事務方法,不然將產生兩個事務,實際上是沒有正確理解spring的事務傳播性和邊界spring

Spring 對事務控制的支持統一在 org.springframework.transaction.TransactionDefinition 類中描述,
該類有如下幾個重要的接口方法:接口

int getPropagationBehavior():事務的傳播行爲事務

int getIsolationLevel():事務的隔離級別get

int getTimeout():事務的過時時間it

boolean isReadOnly():事務的讀寫特性。io

所謂事務傳播行爲就是多個事務方法相互調用時,事務如何在這些方法間傳播。Spring 支持 7 種事務傳播行爲:方法

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

PROPAGATION_SUPPORTS 支持當前事務,若是當前沒有事務,就以非事務方式執行。異常

PROPAGATION_MANDATORY 使用當前的事務,若是當前沒有事務,就拋出異常。時間

PROPAGATION_REQUIRES_NEW 新建事務,若是當前存在事務,把當前事務掛起。

PROPAGATION_NOT_SUPPORTED 以非事務方式執行操做,若是當前存在事務,就把當前事務掛起。

PROPAGATION_NEVER 以非事務方式執行,若是當前存在事務,則拋出異常。

PROPAGATION_NESTED 若是當前存在事務,則在嵌套事務內執行。若是當前沒有事務,則執行與 PROPAGATION_REQUIRED 相似的操做。

下面簡要介紹下事務的邊界

相關文章
相關標籤/搜索