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

该系列文章针对 Mybatis 3.5.1 版本

 一、回顾

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

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

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

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

  • JdbcTransactionFactory

  • ManagedTransactionFactory

二、事务工厂介绍

2.1、 JdbcTransactionFactory 和 JdbcTransaction

2.1.1、JdbcTransactionFactory

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

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

2.1.2、 JdbcTransaction

JdbcTransaction 属性定义如下:

JdbcTransaction 相关操作方法如下:

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

2.2、 ManagedTransactionFactory 和 ManagedTransaction

2.2.1、 ManagedTransactionFactory

ManagedTransactionFactory 相关代码如下:

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

2.2.2、 ManagedTransaction

ManagedTransaction 属性定义如下:

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

ManagedTransaction 相关操作方法如下

对比 JdbcTransaction ,ManagedTransaction 不支持 autoCommit 自动事务提交设置,不支持事务的提交操作,不支持事务的回滚操作,
针对 close 关闭 Connection ,增加了开关进行控制。


文章实时更新,关注公众号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值