spring事務的實現方式和原理以及隔離級別


在使用spring框架時,可以有兩種使用事務的方式,一種時編程式事務,一種是申明式事務,@Transactional注解就是申明式的。
首先,事務這個概念式數據庫層面的,Spring只是基於數據庫中的事務進行了擴展,以及提供了一些能讓程序員更加方便操作事務的方式。

比如我們可以通過在某個方法上增加@Transaction注解,就可以開啟事務,這個方法中所有的sql都會在一個事務中執行,統一成功或者失敗。

在一個方法上加了@Transaction注解后,spring會基於這個類生成一個代理對象,會將這個代理對象作為bean,當在使用這個代理對象的方法時,如果這個方法上存在@Transaction注解,那么代理邏輯會先把事務的自動提交設置為false,然后再去執行原本的邏輯代碼,如果執行邏輯代碼沒有出現異常,那么代理邏輯中就會將事務進行提交,如果執行業務邏輯方法出現了異常,那么則會將事務進行回滾。

當然,針對哪些異常回滾事務是可以配置的,可以利用@Transaction注解中的rollbackFor屬性進行配置,默認情況下會對RuntimeException和Error進行回滾。

Spring事務隔離級別就是數據庫的隔離級別,外加一個默認級別

  • 讀未提交
  • 讀已提交
  • 可重復讀
  • 可串行化

數據庫的配置隔離級別是 讀已提交 而spring配置的隔離級別是 可重復讀 ,請問這時候以哪一個隔離級別為准?
以spring配置的為准,如果spring設置的隔離級別數據庫不支持,效果還是取決於數據庫。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM