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


 

 

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

  在使用spring的時候,事務有兩種形式,一種是編程式,一種是聲明式。@Transactional就是聲明式事務。

  首先,事務的概念是數據庫層面的,spring只是基於此進行了擴展。

  

 

  在一個方法上加了@Transactional注解后,會將這個代理對象做為bean,當在使用這個代理對象作為方法時,如果這個方法存在了@Transactional注解,那么代理對象會先把

  事務的自動提交設置為false,然后再去執行原本的業務邏輯方法,如果執行業務邏輯方法沒有出現異常,那么代理邏輯中就會將事務進行提交,如果出現了異常就會回滾。

 

  spring的事務隔離級別就是數據庫的隔離級別:外加一個默認等級。

  read uncommitted 未提交讀

  read commit 提交讀,不可重復讀。

  repeatable read 可重復讀。

  seriallizable 可串行化 

 

  spring 事務的傳播機制

保證同一個事務中
PORPAGATION_REQUIRED:支持當前事務,如果不存在 就新建一個(默認)
PROPAGATION_SUPPORTS:支持當前事務,如果不存在,就不使用事務
PROPAGATION_MANDATORY:支持當前事務,如果不存在,拋出異常
* 保證沒有在同一個事務中
PROPAGATION_REQUIRES_NEW:如果有事務存在,掛起當前事務,創建一個新的事務
PROPAGATION_NOT_SUPPORTED:以非事務方式運行,如果有事務存在,掛起當前事務
PROPAGATION_NEVER:以非事務方式運行,如果有事務存在,拋出異常
PROPAGATION_NESTED:如果當前事務存在,則嵌套事務執行

 


免責聲明!

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



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