關於@Transactional標籤使用時,事務不回滾的原因

  事務管理是應用系統開發中必不可少的一部分。Spring 爲事務管理提供了豐富的功能支持。Spring 事務管理分爲編程式和聲明式的兩種方式。編程式事務指的是通過編碼方式實現事務;聲明式事務基於 AOP,將具體業務邏輯與事務處理解耦。聲明式事務管理使業務代碼邏輯不受污染, 因此在實際使用中聲明式事務用的比較多。聲明式事務有兩種方式,一種是在配置文件(xml)中做相關的事務規則聲明,另一種是基於 @Transactional 註解的方式。

最簡單最直接的方法就是在類上直接使用@Transactional 註解,那麼這個類中所有的涉及到數據庫事務提交的操作,在發生異常時都會回滾。

  但是有時候你會發現@Transactional 註解不起作用,特別是多表進行修改,插入操作時,出現異常,事務不回滾,導致出現很多冗餘數據,爲什麼呢?在我們開發中,往往對要進行事務操作的方法,往往會用try/catch進行包裹,那麼問題來了用try/catch進行包裹,如果我們不手動拋出異常@Transactional 註解是不起作用的,要麼我們不用try/catch進行包裹,要麼在catch到異常時,手動拋出一個異常,讓@Transactional 註解捕捉到,這樣事務也是會回滾的。

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