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