mybaties源码解析 (org.apache.ibatis.transaction) 事务

事务包下的接口有数据库

一、Transaction接口  主要是数据库链接获取,事务提交,事务回滚,数据库链接关闭apache

二、TransactionFactory事务工厂接口  主要有属性设置、根据链接新建事务、根据数据源和数据级别与是否须要自动提交参数新建事务框架

 

org.apache.ibatis.transaction.managed 函数

一、ManagedTransaction 实现事务的接口对象

能够根据数据库链接 或者数据源,事务级别来初始化。接口

成员变量有事务

 private DataSource dataSource;
  private TransactionIsolationLevel level;
  private Connection connection;
  private boolean closeConnection;get

重点是commit和rollback是空实现,意味着交给容器进行管理。it

根据初始化方式的不一样,获取数据库链接就不一样。没有在构造函数传入connection时,经过数据源的dataSource.getConnection()获取链接。io

 

二、ManagedTransactionFactory 

在默认状况下closeConnection是关闭的,然而一些容器并不但愿这样, 所以若是你须要从链接中中止 它,将 closeConnection 属性设置为 false。

 

org.apache.ibatis.transaction.jdbc 主要是jdbc事务和事务工厂的 封装

JdbcTransaction 

commit接口的实现逻辑是 链接非空并且链接不是自动提交的时候调用链接的commit函数

rollback 的实现逻辑和commit同样

close的实现是 但链接非空的时候,要调用重置自动提交的函数,将链接设置为自动提交。而后执行链接的关闭函数connection.close();

openConnection 在打开一个链接的时候先从获取到链接,而后检查链接的自动提交。若是链接的自动提交状态跟将要设定的不一样时,调用  connection.setAutoCommit(desiredAutoCommit);进行设置。框架中作了异常处理,由于有些数据库驱动不支持getAutoCommit() 或者 setAutoCommit()。

 

 

JdbcTransactionFactory 实现TransactionFactory接口。经过new 的方式建立新的对象。

相关文章
相关标签/搜索