Mybatis实现【5】--事务概述

JAVA事务管理

在JAVA中有两类事务,如果是JDBC类型事务,则是由Connection类来控制的。如果创建一个Connection对象时,没有显示调用setTransactionIsolation(int level)方法,则Connection使用当前数据库默认的事务格力级别,数据库的默认隔离级别可由响应的SQL语句查询到(在MySQL中可使用 select @@tx_isolation;)

MyBatis事务管理

1、MyBatis中,提供了JDBC和MANAGED两种配置属性来配置事务的类型。这两种事务管理器的实现,都是针对JDBC事务的事务管理器(非JTA事务)。

麦库截图20141716170635450.jpg 

其中Transaction接口如下:

麦库截图20141716170815243.jpg 

这些接口实际是对Connection类进行了包装。在ManagedTransaction类的commit和rollback方法没有具体实现,而是交由外部容器去管理事务的提交和回滚,外部容器(Spring容器或EJB容器)通过声明式事务的方式进行管理

2、Mybatis中通过TransactionIsolationLevel类来定义事务级别,如下:

public enum TransactionIsolationLevel {
  //不支持事务
  NONE(Connection.TRANSACTION_NONE),
  //会发生dirty read|non-repeatable read|phantom read
  READ_UNCOMMITTED(Connection.TRANSACTION_READ_UNCOMMITTED),
  //会发生non-repeatable|phantom read
  READ_COMMITTED(Connection.TRANSACTION_READ_COMMITTED),
  //会发生phantom read
  REPEATABLE_READ(Connection.TRANSACTION_REPEATABLE_READ),
  SERIALIZABLE(Connection.TRANSACTION_SERIALIZABLE);
}

3、MyBatis只是对JDBC事务提供了事务管理器的封装,如果想要使用JTA事务,则需要自行实现Transaction接口。Spring框架对此也提供了支持。

该系列文章参考如下书籍及文章:

《Java Persistence with MyBatis 》

《http://www.cnblogs.com/hzhuxin/p/3349836.html》

《http://www.iteye.com/topic/1112327》

《http://www.iteye.com/blogs/subjects/mybatis_internals》

《http://denger.me/2011/05/mybatis-and-spring-interface-integrated/》





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值