MyBatis事務管理的簡單介紹
MyBatis事務管理的兩種策略
MyBatis的事務管理分為兩種形式:
(1)使用JDBC的事務管理機制。這種機制就是利用java.sql.Connection對象完成對事務的提交和撤銷。
(2)使用MANAGED的事務管理機制。此時,MyBatis自身不會去實現事務管理,而是讓程序的Web容器或者Spring容器來實現對事務的管理。
Mybatis事務管理的配置選項
我們可以在mybatis-config.xml中配置事務管理器的實現
<transactionManager type="JDBC"/>
當值為JDBC時,事務管理實現類為JdbcTransaction,底層利用數據庫的Connection來管理事務
當值為MANAGED時,事務管理實現類為ManagedTransactionFactory,但它對事務的管理是一個空實現,將事務管理交給外部容器
Mybatis事務管理的自動提交方式
當我們通過SqlSessionFactory調用openSession方法獲取SqlSession對象時,可以通過參數設置事務是否自動提交,代碼如下所示:
boolean iaAutoCommit = true ;
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(is);
SqlSession session = factory.openSession(iaAutoCommit);
需要注意的是:要保證是同一個事務,那么一定是同一個SqlSession,這樣才能保證是同一個事務,通常使用 ThreadLocal 來實現。