spring管理mybatis事務的保證數據庫連接唯一的原理


這里主要討論的是:spring事務管理中如何保證開啟事務的connection和mybatis中和數據庫交互使用的connection是同一個。

 

要達到這個目的,主要是通過spring-tx-**.jar包中的TransactionSynchronizationManager這個類來保證的。

Spring 中開啟事務的代碼(代碼太多就不貼完了)

(注:這里的兩個參數為datasource和connectionHolder對象,connectionHolder中包含開啟事務的connection,bindResource方法就是將connectionHolder以dataSource綁定到當前線程的ThreadLocal保存的map中

mybatis中執行數據庫交互時獲取connection的代碼如下:

 

 

 可以看到都是從ThreadLocal中獲取的。

 

總結:所以為了保證connection的唯一,spring中開啟事務的時候就將connection保存到ThreadLocal中 ,mybatis需要使用的時候就從ThreadLocal中去獲取。


免責聲明!

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



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