<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## REQUIRED:默認值,有事務就加入,沒有就啟動一個事務 service1 方法 保存成功,未回滾 service2 方法回滾了 ``` public void add() { SysDept dept = new SysDept(); dept.setDeptName("service1 是否回滾"); testMapper.insert(dept); test2Service.addOrUpdate(); } ``` ``` @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) public void addOrUpdate() { SysDept dept = new SysDept(); dept.setDeptName("service2 你好"); testMapper.insert(dept); int i = 0; int j = 5/i; } ``` ## NOT_SUPPORTED:不管有沒有事務,當前方法都以無事務運行 service1 方法 回滾了 service2 方法 未回滾,數據庫保存成功 ``` @Transactional(rollbackFor = Exception.class) public void add() { SysDept dept = new SysDept(); dept.setDeptName("service1 是否回滾"); testMapper.insert(dept); test2Service.addOrUpdate(); } ``` ``` @Transactional(rollbackFor = Exception.class, propagation = Propagation.NOT_SUPPORTED) public void addOrUpdate() { SysDept dept = new SysDept(); dept.setDeptName("service2 你好"); testMapper.insert(dept); int i = 0; int j = 5/i; } ``` ## REQUIRES_NEW:不管是否存在事務都新創建一個事務,之前存在事務則掛起 REQUIRES 和 REQUIRES_NEW 主要區別在于存在兄弟事務時的處理上。 當調用者有事務時: * REQUIRES 就加入主事務,相當于自己沒有獨立的事務,自己方法的事務使用的是主事務,主事務回滾其代碼也回滾 * REQUIRES_NEW 是新啟動一個事務,這樣自己就有獨立的事務,當主事務下有多個獨立子事務,則獨立子事務之前互不影響 | | | | | --- | --- | --- | | service2 事務 | service3事務 | 結果 | | REQUIRES_NEW 報錯 | REQUIRES | 都回滾,因為service3沒有自己的事務,使用的是service1的事務 | | REQUIRES_NEW 報錯 | REQUIRES_NEW | service3不回滾,其他回滾 | service3 add 保存成功,其他倆個回滾成功,相當于有三個事務, service1 大事務和service2、service3 兩個小事務,這倆小事務互相獨立,所以service2報錯不影響service3事務的運行 ``` @Transactional(rollbackFor = Exception.class) public void add() { SysDept dept = new SysDept(); dept.setDeptName("service1 add"); testMapper.insert(dept); test3Service.add(); test2Service.addOrUpdate(); } ``` ``` // 這里不會回滾, 如果換成 REQUIRES 則回滾 @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW) public void add() { SysDept dept = new SysDept(); dept.setDeptName("service3 add"); testMapper.insert(dept); } ``` ``` @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW) public void addOrUpdate() { SysDept dept = new SysDept(); dept.setDeptName("service2 addOrUpdate"); testMapper.insert(dept); int i = 0; int j = 5/i; } ``` ## NEVER:不能運行在事務方法中,否則會直接報錯 Existing?transaction?found?for?transaction?marked?with?propagation?'never' ## SUPPORTS:有事務就加入,無事務則以無事務運行
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看