ibatis源码分析(三)事务机制
ibatis的事务机制一共有ExternalTransaction、JdbcTransaction、JtaTransaction、UserProvidedTransaction四种。下面事务相关的UML
看一下JdbcTransaction的代码:
private void init() throws SQLException, TransactionException {
// 打开事务
connection = dataSource.getConnection();
if (connection == null) {
throw new TransactionException("JdbcTransaction could not start transaction. Cause: The DataSource returned a null connection.");
}
// 设置数据库隔离级别。
isolationLevel.applyIsolationLevel(connection);
// 自动提交
if (connection.getAutoCommit()) {
connection.setAutoCommit(false);
}
//判断是否使用日志
if (connectionLog.isDebugEnabled()) {
connection = ConnectionLogProxy.newInstance(connection);
}
}
从上面的代码可以看出ibatis的事务可以做到多选择,只要你实现Transaction接口就行。
其中有关事务配置的类有:
当你添加自己的事务机制时,可能要添加相应的配置类型。得到参数。这个我还不清楚,待了解。