小記——爲什麼@Transactional會失效?

前言

在項目開發中很多場景會用到事務,合理運用事務會提升代碼的健壯性,我的猿子同事曾經做過一個實驗,同一個方法中同時執行兩個數據庫語句,每1000條中大概有三到四條會出現數據插入不一致的情況,在數據量大的情況下,這個比例非常恐怖。

在事務的使用中應該注意以下三點:
1、使用@Transactional的方法必須是public修飾的。
2、使用@Transactional的方法不能再同類的其他方法中調用。
3、使用@Transactional只會對運行時異常回滾,IOException、SQLException及我們自定義的異常不會觸發回滾。
重點是第三條,許多時候我們會自定義一下exception,這時候如何保證事務回滾呢?如下:@Transactional(rollbackFor = Exception.class)
這樣就會保證我們遇到任何異常都會事務回滾!

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