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