Java事務以及嵌套事務


知識點:java事務屬性

Propagation取值:

  REQUIRED(默認值):在有transaction狀態下執行;如當前沒有transaction,則創建新的transaction;

  SUPPORTS:如當前有transaction,則在transaction狀態下執行;如果當前沒有transaction,在無transaction狀態下執行;

  MANDATORY:必須在有transaction狀態下執行,如果當前沒有transaction,則拋出異常IllegalTransactionStateException;

  REQUIRES_NEW:創建新的transaction並執行;如果當前已有transaction,則將當前transaction掛起;

  NOT_SUPPORTED:在無transaction狀態下執行;如果當前已有transaction,則將當前transaction掛起;

  NEVER:在無transaction狀態下執行;如果當前已有transaction,則拋出異常IllegalTransactionStateException。

1、場景--->並行事務:

並行事務:
A:方法事務為默認的REQUIRED
B:方法事務為
REQUIRES_NEW 或者 REQUIRED

  

  執行結果:

  

  結論:並行事務不存在事務影響

2、場景--->嵌套相同事務:

  a) 事務嵌套,在同一個事務中,沒有對異常進行處理

  

  執行結果:兩個都沒有插入成功

   

  結論:由於兩個都是在一個事務當中,所以只要有一個方法事務有問題,那么都不會插入成功。

 

  b) 事務嵌套,在同一個事務中,對異常進行處理

  

  執行結果:兩個都插入成功。

  

  結論:如果事務存在異常,並進行捕獲處理,不會影響事務。

 3、場景--->嵌套不同事務:

  a)事務嵌套,在不同事務中,沒有對異常進行處理

  

  執行結果:都沒有插入成功。

  

  結論:不同事務中,嵌套的事務,沒有對異常進行處理,都不會執行成功。

  b)事務嵌套,在不同事務中,對異常進行處理

   

   執行結果:都插入成功。

   

  結論:不同事務,只要對異常進行捕獲並處理,都會執行成功

大結論:

1、在Java事務中,事務的嵌套,如果有事務成功,那么則都成功,否則都不會成功。
2、如果事務中存在異常,只要對異常進行捕獲和處理,都為執行成功,否則都不會執行成功。

 


免責聲明!

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



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