zoukankan      html  css  js  c++  java
  • Mybatis 事务管理

    mybatis的事务和数据源有着非常密切的联系。上文讲述了mybatis的数据源,本文要讲述的便是mybatis的事物

    1.事务的分类


    我们还是已一段xml配置文件为例

    <environments default="development">
      <environment id="development">
        <transactionManager type="JDBC">
          <property name="..." value="..."/>
        </transactionManager>
        <dataSource type="POOLED">
          <property name="driver" value="${driver}"/>
          <property name="url" value="${url}"/>
          <property name="username" value="${username}"/>
          <property name="password" value="${password}"/>
        </dataSource>
      </environment>
    </environments>

    xml的transactionManager就是mybatis事务的类型。mybatis事务总共有两种类型。

    1.JDBC:使用JDBC来管理实务
    2.MANAGED:使用WEB容器来管理事务

     2.事务的创建


     事物的创建和Datasource和相似,在系统解析xml的时候生成一个工厂类,当需要生成一个sqlssesion的时候通过工厂类生成一个transaction对象,这个对象被executor对象持有。

    生成事务工厂类

     生成事务

     3.事务的提交


     我们以一次sqlssesion.commit()为起点。来看下commit的内部究竟发生了什么(这里我们已JDBCTransaction为例)

    1.调用executor的commit

    2.调用transaction的commit

     

    3.1JDBCTransaction调用connection的commit

     3.1ManagedTransaction调用connection的commit

    由此可见JDBCTransaction其实只是对Connection做了包装。而ManagedTransaction什么都没做。

    以上就是mybatis的事务介绍。

  • 相关阅读:
    numpy的文件存储 .npy .npz 文件
    Google词向量word2vec的使用
    Python函数-logging.basicConfig
    现货黄金-20180918
    Pandas的loc方法
    Pandas的index属性
    python调用exe程序
    Pandas的concat方法
    转载:为什么选择Nginx(1.2)《深入理解Nginx》(陶辉)
    discuz3.4:在Centos6.5中安装过程
  • 原文地址:https://www.cnblogs.com/xmzJava/p/9126005.html
Copyright © 2011-2022 走看看