mybaties源碼解析 (org.apache.ibatis.transaction) 事務

事務包下的接口有數據庫

一、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 的方式建立新的對象。

相關文章
相關標籤/搜索