MyBatis核心之-事务管理机制

Posted Spring技术栈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis核心之-事务管理机制相关的知识,希望对你有一定的参考价值。

缘起

        Mybatis作为流行ORM框架之一,对事务的支持一定是其核心之一,本文继续死磕Mybatis。

Transaction

        Mybatis定义了org.apache.ibatis.transaction.Transaction接口,该接口提供了对Connection的获取、事务的提交、回滚、关闭操作。

Mybatis事务管理机制

        如下图,Mybatis对Transaction接口做了两种实现,一种是基于JDBC模式的JdbcTransaction,另一种是基于MANAGED模式的ManagedTransaction。

MyBatis核心之-事务管理机制

事实上JdbcTransaction对Transaction接口方法的实现很简单,完全是依赖Connection本身的提交、回滚等操作,自己其实什么都没做

MyBatis核心之-事务管理机制

        基于MANAGED模式的ManagedTransaction,查看源码,发现他娘的比JdbcTransaction更狠,commit()和rollback()直接…… Does nothing…… nothing……

MyBatis核心之-事务管理机制

        没法玩耍了MyBatis核心之-事务管理机制!但是别急,仔细看注解,实际上把对事务的具体操作委托给了容器(汤姆坎特,J鲍斯等)去具体处理

MyBatis核心之-事务管理机制

创建事务

        既然事务存在JDBC和MANAGED两种模式,对应的事务的创建也就存在两种方法, Mybatis将事务创建交给事务工厂JdbcTransactionFactory和ManagedTransactionFactory具体实现

MyBatis核心之-事务管理机制

MyBatis核心之-事务管理机制

事务管理器

        对Mybatis配置环境时通过type来指定事务类型,该参数会在Mybatis初始化阶段被解析到,用来实例化相应的事务工厂,在通过该工厂实例在合适的时间合适的地点(@Transactional)生成合适的事务实例

MyBatis核心之-事务管理机制





欢迎吐槽,欢迎转发

……


以上是关于MyBatis核心之-事务管理机制的主要内容,如果未能解决你的问题,请参考以下文章

mybatis深入理解-----MyBatis事务管理机制

MyBatis事务管理机制

mybatis事务管理机制详解

从零开始手写 mybatis- mybatis 事务管理机制详解

Mybatis事务管理

Spring 对 Mybatis 的整合思路