事务包下的接口有数据库
一、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 的方式建立新的对象。