专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 MyBatis事务创建和管理

MyBatis事务创建和管理

更新时间:2021-07-06 16:07:00 来源:动力节点 浏览842次

1.什么是事务

事务是指的是一个业务上的最小不可再分单元,通常一个事务对应了一个完整的业务,而一个完整的业务需要批量的DML语句共同联合完成。一般,同一个事务中的SQL语句是保存到数据库中的同一个Transaction对象中,原因是Transaction具有一致性的特征,也就是说事务中如果有任何一条sql语句运行失败,那么这个事务中所有的SQL语句都会被判定为无效SQL。

2.事务管理方式(事务策略)

Mybatis管理事务是分为两种方式:

(1)使用JDBC的事务管理机制,就是利用java.sql.Connection对象完成对事务的提交

(2)使用MANAGED的事务管理机制,这种机制mybatis自身不会去实现事务管理,而是让程序的容器(JBOSS,WebLogic)来实现对事务的管理

在Mybatis的配置文件中可以配置事务管理方式如下:

mybatis事务

Mybatis提供了一个事务接口Transaction,以及两个实现类jdbcTransaction和ManagedTransaction,当spring与Mybatis一起使用时,spring提供了一个实现类SpringManagedTransaction

Transaction接口:提供的抽象方法有获取数据库连接getConnection,提交事务commit,回滚事务rollback和关闭连接close,源码如下:

mybatis事务

JdbcTransaction实现类:Transaction的实现类,通过使用jdbc提供的方式来管理事务,通过Connection提供的事务管理方法来进行事务管理,源码如下:

mybatis事务

 ManagedTransaction实现类:通过容器来进行事务管理,所有它对事务提交和回滚并不会做任何操作,源码如下:

mybatis事务

SpringManagedTransaction实现类:它其实也是通过使用JDBC来进行事务管理的,当spring的事务管理有效时,不需要操作commit/rollback/close,spring事务管理会自动帮我们完成,源码如下:

mybatis事务

三、Mybatis事务的创建方式源码分析

Mybatis是基于工厂模式提供了对应的事务类的生成工厂,比如:JdbcTransactionFactory、ManagedTransactionFactory。

注意:当spring和mybatis整合一起的时候,mybatis提供了SpringManagedTransaction实现类,而与之对应的事务工厂类为SpringManagedTransactionFactory

1.分析源码:以JdbcTransactionFactory创建为原型分析(其他的具体源码自行分析)

mybatis事务

JdbcTransactionFactory:创建JdbcTransaction事务,源码如下:

mybatis事务

当然为了更好的理解Mybatis相关知识,最好是先走一下Mybatis的启动,关键是分析parseConfiguration方法中的EnvironmentElement方法中关于DataSource中相关配置并解析文件装载到configuration的DataSource中的过程。

以上就是动力节点小编介绍的"MyBatis事务创建和管理",希望对大家有帮助,想了解更多可查看Mybatis基础教程,如有疑问,请在线咨询,有专业老师随时为您服务。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>