原创

Mybatis 事务管理机制详解

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

Mybatis 事务管理机制

事务概述

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

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

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

事务管理

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

JDBC的事务管理

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

<!-- 配置环境:数据源,事务,配置多个环境 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等来实现对事务的管理。

正文到此结束
本文目录