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對事物的處理。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM