您好,登錄后才能下訂單哦!
小編給大家分享一下java中事務的傳播行為有哪些,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
當事務A被事務B調用時,必須得指定事務的傳播行為。
事務的傳播行為有7種,分別為REQUIRED、SUPPORTS、MANDATORY、REQUIRES_NEW、NOT_SUPPORTED、NEVER和NESTED
REUQIRED
如果A方法和B方法的關系時這樣子的
如果A調用B,那么B和A走的同一個事務;
如果A沒有加事務,那么B就會重新new一個事務;
2.SUPPORTS
如果A有事務,那么B會和A共用一個事務;
如果A沒有事務,那么B也不會有事務。
3.MANDATORY
如果A有事務,那么B會和A用一個事務;
如果A沒有事務,那么B會跑出異常,也就是B如果這樣配了必須得加入有事務的方法。
4.REQUIRES_NEW
這樣寫的話,執行B時將會把A事務掛起,B事務提交后才能提交A事務,可以這么說,這兩個事務是相互獨立的。
5.NOT_SUPPORTED
如果事務B被賦予NOT_SUPPORTED,那么事務B無論如何都不支持事務,并且掛起所有事務。
6.NEVER
總是非事務地執行,如果寫成上圖這樣,它會拋異常,因為它存在事務。
7.NESTED
如果一個活動的事務存在,則運行在一個嵌套的事務中. 如果沒有活動事務, 則按TransactionDefinition.PROPAGATION_REQUIRED 屬性執行。這是一個嵌套事務,使用JDBC 3.0驅動時,僅僅支持DataSourceTransactionManager作為事務管理器。需要JDBC 驅動的java.sql.Savepoint類。有一些JTA的事務管理器實現可能也提供了同樣的功能。使用PROPAGATION_NESTED,還需要把PlatformTransactionManager的nestedTransactionAllowed屬性設為true;而 nestedTransactionAllowed屬性值默認為false。
外層事務的回滾可以引起內層事務的回滾。而內層事務的異常并不會導致外層事務的回滾,它是一個真正的嵌套事務
看完了這篇文章,相信你對“java中事務的傳播行為有哪些”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。