Mybatis事务管理机制<transactionManager>
一、概念:
-
多个操作同时完成,或同时失败称为事务处理。 事务有四个特性:一致性,持久性,原子性,隔离性。
二、 在MyBatis框架中设置事务:
-
Mybatis中提供了两种事务管理机制:
<!--配置事务管理器 属性: type:指定事务管理的方式{ "JDBC":事务的控制交给程序员处理 "MANAGED":事务的控制由容器(Spring)来管理 } --> <transactionManager type="JDBC"></transactionManager>
三、详解两种事务管理机制:
1. JDBC:
-
使用JDBC管理事务的时候,底层创建事务管理器对象:JdbcTransaction对象。 程序员手动提交:
sqlSession = factory.openSession(); //默认sqlSession = factory.openSession(false)手动提交事务。 //如果事务管理器是JDBC,且传参是false,底层实际上会执行:connection.setAutoCommit(false); sqlSession.commit(); //底层实际上执行的是connection.commit();
-
程序员设置自动提交:
sqlSession = factory.openSession(true); //这种方式下程序每执行一行sql语句就提交一次,底层相当于没有事务机制的JDBC代码, //即没有connection.setAutoCommit(false)这行代码,所以根本不用commit(), //换句话说,这种方式并没有事务的参与,没有开启事务。
2. MANAGED: