事务包下的接口有
1、Transaction接口 主要是数据库连接获取,事务提交,事务回滚,数据库连接关闭
2、TransactionFactory事务工厂接口 主要有属性设置、根据连接新建事务、根据数据源和数据级别与是否需要自动提交参数新建事务
org.apache.ibatis.transaction.managed
1、ManagedTransaction 实现事务的接口
可以根据数据库连接 或者数据源,事务级别来初始化。
成员变量有
private DataSource dataSource;
private TransactionIsolationLevel level;
private Connection connection;
private boolean closeConnection;
重点是commit和rollback是空实现,意味着交给容器进行管理。
根据初始化方式的不同,获取数据库连接就不同。没有在构造函数传入connection时,通过数据源的dataSource.getConnection()获取连接。
2、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 的方式创建新的对象。