Mybatis源碼解析之事務管理

Mybatis事務管理

我們可以在mybatis-config.xml中配置事務管理器的實現

<transactionManager type="JDBC"/>

當值為JDBC時,事務管理實現類為JdbcTransaction,底層利用數據庫的Connection來管理事務

當值為MANAGED時,事務管理實現類為ManagedTransactionFactory,但它對事務的管理是一個空實現,將事務管理交給外部容器

在這裡插入圖片描述

JdbcTransaction

在這裡插入圖片描述

ManagedTransaction

在這裡插入圖片描述

和Spring整合後的事務管理

mybatis和spring整合創建TransactionFactory的時候,如果沒有設置,則會將其設置為SpringManagedTransactionFactory

org.mybatis.spring.SqlSessionFactoryBean#buildSqlSessionFactory

在這裡插入圖片描述

請添加圖片描述

但是真正執行事務的時候,一般情況下不會由SpringManagedTransaction來執行,因為我們一般都把事務交給spring來管理,當把事務交給spring管理的時候this.isConnectionTransactional=true,因此commit和rollback相當於是空實現

在這裡插入圖片描述

mybatis和spring整合後,一般還是由spring框架中的DataSourceTransactionManager來進行事務管理

在這裡插入圖片描述

如果你對spring進行事務管理不清楚的話,等我後續的spring專欄

到此這篇關於Mybatis源碼解析之事務管理的文章就介紹到這瞭,更多相關Mybatis事務管理內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: