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.isCnotallow=true,是以commit和rollback相當于是空實作
mybatis和spring整合後,一般還是由spring架構中的DataSourceTransactionManager來進行事務管理