zoukankan      html  css  js  c++  java
  • 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中去获取。

  • 相关阅读:
    java中的设计模式
    stack
    最大堆排序
    Starship Troopers
    Tick and Tick
    Last non-zero Digit in N!
    G
    C
    B
    A
  • 原文地址:https://www.cnblogs.com/guyaoblog/p/11421978.html
Copyright © 2011-2022 走看看