Spring 中@transactional 的使用

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

使用Spring的 @Transactional來設置事務時,需要注意:

  1. 註解添加在public方法上纔有效
  2. 默認配置下 Spring 只會回滾運行時、未檢查異常(繼承自 RuntimeException 的異常)或者 Error,如果希望拋出其他異常時也回滾,可通過rollback-for 項設置
  3. 當被註解了 @Transactional的方法被同一個類中的其他方法調用,事務不會生效,只有被另一個類調用才生效。如果想打破這種方式,除非使用AspectJ代替Spring 的AOP。
  4. 如果希望事務中的某個方法即使事務異常時,也不回滾,可通過設置事務的propagation來實現。
  5. mysql默認的事務隔離級別爲可重複讀,oracle爲讀已提交。

參考資料:

  1. Spring Boot 中使用 @Transactional 註解配置事務管理
  2. 透徹的掌握 Spring 中@transactional 的使用
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章