@Transactional事務註解簡單說明

使用位置 :@Transactional事務註解 既可以寫在方法上也可以寫在類上

@Transactional(rollbackFor = Exception.class)

         使用: 1.默認值爲UncheckedException,包括了RuntimeException和Error.

                  2.當我們直接使用@Transactional不指定rollbackFor時,Exception及其子類都不會觸發回滾

詳情細節參考大佬:  https://zhuanlan.zhihu.com/p/38208248   https://www.cnblogs.com/clwydjgs/p/9317849.html

下面情況會回滾:

                1.如果沒有加@Transactional註解,那麼這兩個操作就不在一個事務裏面,不具有原子性。如果deleteAll之後拋異常,那麼就會導致只刪除不新增。

                2.加了@Transactional之後,這兩個動作在一個事務裏頭,具有原子性,要麼全部成功,要麼全部失敗。如果deleteAll之後拋異常,則事務回滾,恢復原先被刪除的數據。

@Transactional
public void deleteAllAndAddOneTransactional(Customer customer) {
 customerRepository.deleteAll();
 if ("Yang".equals(customer.getFirstName())) {
 throw new RuntimeException();
 }
 customerRepository.save(customer);
}

一個沒有加@Transactional註解的方法,去調用一個加了@Transactional的方法,出現異常不會回滾

發佈了75 篇原創文章 · 獲贊 23 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章