动力节点首页 全国咨询热线:400-8080-105

绑定手机号,登录
手机号

验证码

微信登录
手机号登录
手机号

验证码

微信登录与注册
微信扫码登录与注册

扫码关注微信公众号完成登录与注册
手机号登录
首页 > 文章

MyBatis事务管理的两种方式

07-15 11:23 831浏览
举报 T字号
  • 大字
  • 中字
  • 小字

1.什么是事务

事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。事务可大可小,在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。

2.MyBatis事务管理策略

MyBatis的事务管理分为两种形式:

(1)使用JDBC的事务管理机制。

这种机制就是利用java.sql.Connection对象完成对事务的提交

(2)使用MANAGED的事务管理机制。

这种机制mybatis自身不会去实现事务管理,而是让程序的Web容器或者Spring容器来实现对事务的管理。

3.MyBatis中Transaction接口

mybatis支持的两种事务类型管理器,Transactions接口中对两种事务管理方式进行行为约束。具体介绍看下面代码。

public interface Transaction 
{
  //JDBC中事务手动管理,需要依靠Connection对象,此方法可以取得Connection对象。
  Connection getConnection() throws SQLException;
  //设置在什么情况下执行commit()命令
  void commit() throws SQLException;
  //设置在什么情况下执行rollback()命令
  void rollback() throws SQLException;
  //业务完毕后,处理Connection对象,一般有两种形式,将这个Connection对象销毁或者将Connection返回数据库连接池中。
  void close() throws SQLException;  
  //Connection向数据库索要一个Transaction对象时的最大等待时间。
  Integer getTimeout() throws SQLException; 
}

4.Transaction的接口实现类

Transaction接口中有两个实现类:JdbcTransaction和ManagedTransaction。

(1)JdbcTransaction

JdbcTransaction直接使用JDBC的提交和回滚事务管理机制。它依赖与从dataSource中取得的连接connection来管理transaction的作用域,connection对象的获取被延迟到调用getConnection()方法。如果autoCommit设置为on,开启状态的话,它会忽略commit和rollback。

(2)ManagedTransaction

查看这个类,可知其中的commit方法和rollback方法没有具体实现。ManagedTransaction是让容器来管理事务Transaction的整个生命周期,使用ManagedTransaction的commit和rollback功能不会对事务有任何影响,它没有具体实现,它将事务管理权交给容器来实现。

动力节点在线课程涵盖零基础入门,高级进阶,在职提升三大主力内容,覆盖Java从入门到就业提升的全体系学习内容。全部Java视频教程免费观看,相关学习资料免费下载!对于火爆技术,每周一定时更新!如果想了解更多相关技术,可以到动力节点在线免费观看MyBatis视频教程学习哦!

0人推荐
共同学习,写下你的评论
0条评论
代码小兵345
程序员代码小兵345

44篇文章贡献168626字

相关课程 更多>

作者相关文章更多>

推荐相关文章更多>

Java面试题及答案整理

提枪策马乘胜追击04-21 20:01

Spring常见面试题

代码小兵92504-17 16:07

Java零基础实战项目——五子棋

代码小兵98804-25 13:57

Java string类详解

杨晶珍05-11 14:54

6道经典算法面试题

杨晶珍05-12 16:39

发评论

举报

0/150

取消