mybatis没有事务管理的能力_MyBatis事务管理的两种方式

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功能不会对事务有任何影响,它没有具体实现,它将事务管理权交给容器来实现。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值