注意這裏寫的是spring的Transactional,不是javax下面的Transactional....html
儘可能使用spring下面的Transactional,雖然我也不知道這二者本質區別是什麼....java
看一篇博客,以爲寫得很不錯就copy過來一份,原博客地址在下面。spring
TransactionDefinition.PROPAGATION_REQUIRED:若是當前存在事務,則加入該事務;若是當前沒有事務,則建立一個新的事務。這是默認值。
TransactionDefinition.PROPAGATION_REQUIRES_NEW:建立一個新的事務,若是當前存在事務,則把當前事務掛起。
TransactionDefinition.PROPAGATION_SUPPORTS:若是當前存在事務,則加入該事務;若是當前沒有事務,則以非事務的方式繼續運行。
TransactionDefinition.PROPAGATION_NOT_SUPPORTED:以非事務方式運行,若是當前存在事務,則把當前事務掛起。
TransactionDefinition.PROPAGATION_NEVER:以非事務方式運行,若是當前存在事務,則拋出異常。
TransactionDefinition.PROPAGATION_MANDATORY:若是當前存在事務,則加入該事務;若是當前沒有事務,則拋出異常。
TransactionDefinition.PROPAGATION_NESTED:若是當前存在事務,則建立一個事務做爲當前事務的嵌套事務來運行;若是當前沒有事務,則該取值等價於TransactionDefinition.PROPAGATION_REQUIRED。.net
參考連接:http://www.cnblogs.com/yepei/p/4716112.htmlhtm
https://blog.csdn.net/qq_34552004/article/details/79599275blog
在記錄一個點:事務
事物回滾須要區分檢查異常和非檢查異常(也就是運行時異常)。檢查異常例如IOException異常等,在你寫代碼時編譯提示你必須try catch 或向上拋,反正就是必須處理。而運行時異常,就是在運行時的產生異常,就好比/by zero異常。默認檢查異常事物是不會進行回滾的,運行時異常纔會進行回滾。添加上@Transactional(rollbackFor = Exception.class) 就能夠出現異常就所有回滾了。博客
參考連接:https://blog.csdn.net/weixin_41485592/article/details/80877665it