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中去获取。

  • 相关阅读:
    sql server 获取本月的始末时间
    超时时间已到
    sql server定时自动备份
    创建连接服务器
    date制作电子时钟
    C#继承(三)
    C# Split分割
    Dom动态添加属性
    date制作电子时钟(二)
    全局遮罩 shade
  • 原文地址:https://www.cnblogs.com/guyaoblog/p/11421978.html
Copyright © 2011-2022 走看看