Mybatis:事务管理机制详解

事务是一个最小的逻辑执行单元,整个事务不能分开执行,要么同时执行,要么同时放弃执行。
Mybatis的事务管理分为两种形式:JDBCMANAGED

Mybatis 事务管理机制

事务概述

事务是一个最小的逻辑执行单元,整个事务不能分开执行,要么同时执行,要么同时放弃执行。
事务具备的四个特性(ACID):

  1. 原子性:事务是应用中不可再分的最小逻辑执行体。
  2. 一致性:事务执行的结果,必须使数据库的状态从一种一致状态,变到另一种一致状态,一致性是通过原子性来保证的。
  3. 隔离性:并发执行的事务之间互不影响。
  4. 持续性:事务一旦提交,保存到物理数据库中。

数据库的事务而言,具有以下几个动作:创建、提交、回滚、关闭

事务管理

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

JDBC的事务管理

即利用java.sql.Connection对象完成对事务的提交(commit()),回滚(rollback())和关闭(close())等操作。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!-- 配置环境:数据源,事务,配置多个环境 default:设置当前默认使用环境。 
type="JDBC" 指直接简单使用了JDBC的提交和回滚设置;
type="MANAGED" 指让容器实现对事务的管理。
<transactionManager>的type决定我们用什么类型的事务管理机制 -->
<environments default="development">
<environment id="development">
<!-- 使用jdbc事务管理 -->
<transactionManager type="JDBC" />
<!-- 数据源连接池 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>

MANAGED的事务管理

此种机制,Mybatis自身不会去实现事务管理,即提交和回滚时是什么都没有做,而是让容器如WebLogic,JBOSS等来实现对事务的管理。

作者

光星

发布于

2017-12-31

更新于

2022-06-17

许可协议

评论