<label id="oakn9"><ruby id="oakn9"><input id="oakn9"></input></ruby></label>

<button id="oakn9"><acronym id="oakn9"><input id="oakn9"></input></acronym></button>

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 來實現。

標簽: none

[站長推薦]-[系統化學習]


[網站公告]-[抵制某公眾號與某知識星球]


添加新評論

久久99国产只有精品