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。
事实上JdbcTransaction对Transaction接口方法的实现很简单,完全是依赖Connection本身的提交、回滚等操作,自己其实什么都没做
基于MANAGED模式的ManagedTransaction,查看源码,发现他娘的比JdbcTransaction更狠,commit()和rollback()直接…… Does nothing…… nothing……
没法玩耍了!但是别急,仔细看注解,实际上把对事务的具体操作委托给了容器(汤姆坎特,J鲍斯等)去具体处理
创建事务
既然事务存在JDBC和MANAGED两种模式,对应的事务的创建也就存在两种方法, Mybatis将事务创建交给事务工厂JdbcTransactionFactory和ManagedTransactionFactory具体实现
事务管理器
对Mybatis配置环境时通过type来指定事务类型,该参数会在Mybatis初始化阶段被解析到,用来实例化相应的事务工厂,在通过该工厂实例在合适的时间合适的地点(@Transactional)生成合适的事务实例
欢迎吐槽,欢迎转发
……
以上是关于MyBatis核心之-事务管理机制的主要内容,如果未能解决你的问题,请参考以下文章