@Transactional的正確使用之事務傳播行爲的解疑

傳送門:https://blog.csdn.net/nbl_yc/article/details/104019732 事務方法之間的調用,回滾問題

前提:事務的傳播行爲用在事務與事務之間

 

舉例:前提:abc都具有事務,ac的傳播模式爲默認的required,有一步出錯,該方法下面的方法就不會再執行了

          @Transactional

         public void mainTransaction(){

                a();

                b();

                c();

        }

 

情況一:

          如果a,b,c的傳播方式是required(自己內部的傳播模式),那麼abc屬於綁定的狀態,一個出錯,全部回滾

情況二:

         如果ac的傳播模式是required,b的傳播模式是requiredNew,那麼b異常,ab都會回滾;c要是異常,a會回滾,b因爲開啓了自己的事務,已經執行到數據庫了,不會再回滾

 

總結:required是大家綁定到一塊,之間互相影響。requiredNew是自己會影響到別人,但是別人出錯,不會影響到自己

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章