mybatis plus 事务管理器_[Mybatis]-[基础支持层]-数据源信息-事务管理器详解

9df150d6e32018160c8ed849de6f3597.png
该系列文章针对 Mybatis 3.5.1 版本

一、回顾

先来回顾一下XMLConfigBuilder标签解析构建TransactionFactory的相关代码,如下图:

069eaae47e307c64c29feaac66f1e228.png

代码通过读取 mybatis-config.xml配置文件中标签配置 <transactionManager type="xx" 上的 type 值,该值对应的 TypeAliasRegistry 中 HashMap 的 key值。

通过 key 值获取 class ,然后通过反射实例化相关的事务工厂。

Mybatis 默认提供两种事务工厂支持:

75f1c231c93cedeabd284289210ac81a.png
  • JdbcTransactionFactory
  • ManagedTransactionFactory

二、事务工厂介绍

2.1、 JdbcTransactionFactory 和 JdbcTransaction

2.1.1、JdbcTransactionFactory

先来看一下 JdbcTransactionFactory 相关代码,如下:

8dceb34c7d71c119553eeb0fab92952d.png

如上述代码,JdbcTransactionFactory 并没有任何复杂操作,直接就是实例化 JdbcTransaction 对象。

2.1.2、 JdbcTransaction

JdbcTransaction 属性定义如下:

afaf227d44b933768b07d994ee733ba5.png

JdbcTransaction 相关操作方法如下:

8bb9319dc46f8deb04deafacc81a6881.png

从上述代码能够知道, JdbcTransaction 的功能就是对已有的数据连接,进行事务的管理设置,比如:是否自动提交事务,事务隔离级别,事务的提交回滚等操作的控制。

2.2、 ManagedTransactionFactory 和 ManagedTransaction

2.2.1、 ManagedTransactionFactory

ManagedTransactionFactory 相关代码如下:

e111fe5fc1e7460f878dd7273c07d997.png

ManagedTransactionFactory 工厂对于 ManagedTransaction 对象的构建同样是直接实例化对象,没有复杂操作,
唯一不同于JdbcTransactionFactory 的地方就是 ManagedTransactionFactory 中读取了一个配置信息 closeConnection 该配置是用来控制
ManagedTransactionFactory 获取到的 ManagedTransaction 中的 数据连接 Connection 是否允许被关闭

2.2.2、 ManagedTransaction

ManagedTransaction 属性定义如下:

7381b6c872d8cf4b7f7b17f9fa275ec0.png

ManagedTransaction 区别于 JdbcTransaction,少了 autoCommit 自动事务提交的配置,多了 closeConnection 控制 Connection 是否能够关闭的属性。

ManagedTransaction 相关操作方法如下

dab34c89b23787957b2fb07e2ea9ea29.png

对比 JdbcTransaction ,ManagedTransaction 不支持 autoCommit 自动事务提交设置,不支持事务的提交操作,不支持事务的回滚操作,

针对 close 关闭 Connection ,增加了开关进行控制。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值