1. 程式人生 > 其它 >spring 事務傳播(Propagation)

spring 事務傳播(Propagation)

propagation 一共有以下幾種選項:

1. REQUIRED(預設): 使用當前的事務,如果當前沒有事務,則自己新建一個事務,子方法必須執行在一個事務中;如果當前存在事務,則加入這個事務,成為一個整體
2. SUPPORTS: 如果當前有事務,則使用事務;如果當前沒有事務,則不使用事務。主要用於查詢,因為查詢不需要事務。
3. MANDATORY: 強制要求必須存在一個事務,如果不存在,則丟擲異常
4. REQUIRES_NEW: 如果當前有事務,則掛起該事務,並自己建立一個新的事務給自己使用;如果當前沒有事務,則同 REQUIRED
5. NOT_SUPPORTED: 如果當前有事務,則把事務掛起,自己不適用事務去執行資料庫操作
6. NERVER: 如果當前有事務存在,則丟擲異常
7. NESTED: 如果當前有事務,則開啟子事務(巢狀事務),巢狀事務是獨立提交或者回滾;如果當前沒有事務,則同 REQUIRED
           但是如果主事務提交,則會攜帶子事務一起提交。
           如果主事務回滾,則子事務會一起回滾。相反,子事務異常,則父事務可以回滾或不回滾。