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

添加新评论