@Transactional注解參數詳解


參數一: propagation

詳情如下:

 REQUIRED:支持當前事務,如果當前沒有事務,就新建一個事務。這是最常見的選擇。 
 SUPPORTS:支持當前事務,如果當前沒有事務,就以非事務方式執行。 
 MANDATORY:支持當前事務,如果當前沒有事務,就拋出異常。 
 REQUIRES_NEW:新建事務,如果當前存在事務,把當前事務掛起。 
 NOT_SUPPORTED:以非事務方式執行操作,如果當前存在事務,就把當前事務掛起。 
 NEVER:以非事務方式執行,如果當前存在事務,則拋出異常。 
 NESTED:支持當前事務,如果當前事務存在,則執行一個嵌套事務,如果當前沒有事務,就新建一個事務。 

 

參數二:事物超時設置: timeout

默認30秒

 

參數三:事務隔離級別:isolation

詳情如下:

Isolation.READ_UNCOMMITTED  : 讀取未提交數據(會出現臟讀, 不可重復讀) 基本不使用

Isolation.READ_COMMITTED  : 讀取已提交數據(會出現不可重復讀和幻讀)

Isolation.REPEATABLE_READ:可重復讀(會出現幻讀)
Isolation.SERIALIZABLE:串行化

備注:

MYSQL: 默認為REPEATABLE_READ級別
SQLSERVER: 默認為READ_COMMITTED

 

參數四: readOnly 

屬性用於設置當前事務是否為只讀事務,設置為true表示只讀,false則表示可讀寫,默認值為false。

 

參數五:rollbackFor

該屬性用於設置需要進行回滾的異常類數組,當方法中拋出指定異常數組中的異常時,則進行事務回滾。例如:

指定單一異常類:@Transactional(rollbackFor=RuntimeException.class)

指定多個異常類:@Transactional(rollbackFor={RuntimeException.class, Exception.class})

 

參數六: rollbackForClassName

該屬性用於設置需要進行回滾的異常類名稱數組,當方法中拋出指定異常名稱數組中的異常時,則進行事務回滾。例如:

指定單一異常類名稱:@Transactional(rollbackForClassName="RuntimeException")

指定多個異常類名稱:@Transactional(rollbackForClassName={"RuntimeException","Exception"})

 

參數七:noRollbackForClassName

該屬性用於設置不需要進行回滾的異常類名稱數組,當方法中拋出指定異常名稱數組中的異常時,不進行事務回滾。例如:

指定單一異常類名稱:@Transactional(noRollbackForClassName="RuntimeException")

指定多個異常類名稱:

@Transactional(noRollbackForClassName={"RuntimeException","Exception"})

 

 

參數八:noRollbackFor

該屬性用於設置不需要進行回滾的異常類數組,當方法中拋出指定異常數組中的異常時,不進行事務回滾。例如:

指定單一異常類:@Transactional(noRollbackFor=RuntimeException.class)

指定多個異常類:@Transactional(noRollbackFor={RuntimeException.class, Exception.class})

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM