Mybaits事务管理的实现原理源码分析

Mybatis版本:3.2.8
Mysql 驱动包版本:5.1.29

Mybatis自己封装了两种事务实现方式:

JDBC:就是按照 jdbc 的方式来控制事务的提交、回滚和关闭等操作,Mybatis 对其进行了一下封装,底层调用的还是jdbc的具体实现。以 Mysql 为例,如果Mybatis设置了事务管理器为 JDBC,那么在执行事务操作 commit、rollback 方法时,实际调用的是
mysql-connector-java-xxx.jar 中 ConnectionImpl 类里的 commit、rollback、close方法。下面会简单分析下 ConnectionImpl 类中事务实现源码。
MANAGED:选择这种方式时,Mybatis 会释放事务管理权,并将事务交由外部容器管理,如与 Spring 整合时,会将事务交给 Spring 中的事务实现类 SpringManagedTransaction 来管理。

Mybatis配置文件中事务类型的配置方式:

<configuration>
	<!--省略其他配置-->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driverClasss}"/>
                <property name="url" value="${jdbcUrl}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
</configuration>

transactionManager 就是用来指定事务管理类型的节点,Mybatis 初始化时,会将该节点解析,并将事务类型存到 Environment 对象中,Environment 对象又存放在 Configuration 对象中。

本文主要讲解下 Mybatis 中 JDBC 模式的事务管理,首先看下 Mybatis 下的事务涉及到的相关类,如下图所示:
工程包中的事务包
从上图看,事务涉及到的相关类还是比较少的,而且也相对简单点。下面再从UML 图来看各个类之间的关联关系:
Mybatis 事务类图
JdbcTransactionJDBC 类型的事务管理方式。
ManagedTransactionMANAGED 类型的事务管理方式。

JdbcTransaction 是 JDBC类型的事务管理方式。

首先获取连接getConnection

public Connection getConnection
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值