• Mybatis-学习笔记(6)Mybatis的事务管理机制


    1、什么是事务。

      多个数据库原子访问应该被绑定成一个整体,这就是事务。事务是一个最小的逻辑执行单元,整个事务不能分开执行,要么同时执行,要么同时放弃执行。

      事务的4个特性:原子性、一致性、隔离性、持续性。

      

    2、Mybatis提供了Transaction接口。

       Transaction接口有两个实现类:事务

            <1>JdbcTransaction:

            <2>ManagedTransaction:

       还提供了TransactionFactory接口:获取事务的实例对象

            <1>JdbcTransactionFactory:

            <2>ManagedTransactionFactory:

       事务一般应该包含的动作:create、commit、rollback、close

       

    3、事务的配置创建和使用

       1》事务的配置

    <environments default="oracle">
            <environment id="oracle">
                <!-- 指定事务管理类型,type="JDBC"指直接使用JDBC的提交与回滚   -->
                <transactionManager type="JDBC" />
                ...
            </environment>
    </environments>

       2》事务工厂的创建

       

       如果type=“MANAGED”,则Mybatis会创建一个ManagedTransactionFactory的实例。

       3》事务工厂TransactionFactory

         通过事务工厂TransactionFactory很容易的获取到Transaction对象实例。JdbcTransactionFactory将创建JdbcTransaction。

       4》JdbcTransaction

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

         也就是说,JdbcTransaction是使用java.sql.Connection上的commit和rollback功能来完成事务的操作,JdbcTransaction只是相当于对java.sql.Connection事务处理进行了再次封装,Transaction的事务管理都是通过java.sql.Connection实现的。

       5》Managedtransaction

         让容器管理事务Transaction的整个生命周期,即使用ManagedTransaction的commit和rollback功能不会对事务有任何的影响,它什么都不做,它将事务的管理权移交给了容器来实现。

  • 相关阅读:
    人工智能深度学习:TensorFlow2.0如何保持和读取模型?
    人工智能深度学习:TensorFlow2.0实现回归问题
    InnoDB存储引擎中的锁
    Spring源码系列8
    Spring源码系列7
    Spring源码系列6
    Spring源码系列5
    Spring源码系列4
    Spring源码系列3
    Spring源码系列2
  • 原文地址:https://www.cnblogs.com/ZeroMZ/p/11418610.html
Copyright © 2020-2023  润新知