MyBatis配置项--配置环境(environments)--事务管理器(transactionManager)

在MyBatis中有两种类型的事务管理器(也就是type=“[JDBC|MANAGED]”):

·JDBC – 这个配置就是直接使用了JDBC的提交和回滚设置,它依赖于从数据源得到的连接来管理事务作用域。

·MANAGED – 这个配置几乎没做什么。它从来不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如JEE应用服务器的上下文)。默认情况下它会关闭连接,然而一些容器并不希望这样,因此需要将closeConnection属性设置为false来阻止它默认的关闭行为。例如:

 

<transactionManager type="MANAGED">

  <property name="closeConnection" value="false"/>

</transactionManager>

提示:如果使用spring+MyBatis,则没有必要配置事务管理器,因为spring模块会使用自带的管理器来覆盖前面的配置。

这两种事务管理器类型都不需要任何属性。它们不过是类型别名,换句话说,可以使用TransactionFactory接口的实现类的完全限定名或类型别名代替它们。

public interface TransactionFactory {

  void setProperties(Properties props); 

  Transaction newTransaction(Connection conn);

  Transaction newTransaction(DataSource dataSource, TransactionIsolationLevel level, boolean autoCommit); 

}

任何在XML中配置的属性在实例化之后将会被传递给setProperties()方法。也需要建立一个Transaction接口的实现类,这个接口也很简单:

public interface Transaction {

  Connection getConnection() throws SQLException;

  void commit() throws SQLException;

  void rollback() throws SQLException;

  void close() throws SQLException;

  Integer getTimeout() throws SQLException;

}

使用这两个接口,可以完全自定义MyBatis对事物的处理。

原文地址:https://www.cnblogs.com/arrows/p/10338785.html