MyBatis中jdbc和managed的区别

原文:https://blog.csdn.net/qq_36074180/article/details/74010510 

1 JdbcTransaction 和 ManagedTransaction都实现Transaction的接口MyBatis中jdbc和managed的区别_第1张图片

2 MyBatis的事务管理分为两种形式:

一、使用JDBC的事务管理机制:即利用java.sql.Connection对象完成对事务的提交(commit())、回滚(rollback())、关闭(close())等

二、使用MANAGED的事务管理机制:这种机制MyBatis自身不会去实现事务管理,而是让程序的容器如(JBOSS,Weblogic)来实现对事务的管理

3MyBatis中jdbc和managed的区别_第2张图片

4

MyBatis事务的创建是交给TransactionFactory 事务工厂来创建的,如果我们将的type 配置为"JDBC",在MyBatis初始化解析节点时,会根据type="JDBC"创建一个JdbcTransactionFactory工厂

如果type = "JDBC",则MyBatis会创建一个JdbcTransactionFactory.class 实例;如果type="MANAGED",则MyBatis会创建一个MangedTransactionFactory.class实例。

5

JdbcTransaction直接使用JDBC的提交和回滚事务管理机制 。

 ManagedTransaction让容器来管理事务Transaction的整个生命周期

注意:如果我们使用MyBatis构建本地程序,即不是WEB程序,若将type设置成"MANAGED",那么,我们执行的任何update操作,即使我们最后执行了commit操作,数据也不会保留,不会对数据库造成任何影响。因为我们将MyBatis配置成了“MANAGED”,即MyBatis自己不管理事务,而我们又是运行的本地程序,没有事务管理功能,所以对数据库的update操作都是无效的。
--------------------- 
作者:大炮的大炮没有大炮 
来源:CSDN 
原文:https://blog.csdn.net/qq_36074180/article/details/74010510 
版权声明:本文为博主原创文章,转载请附上博文链接!

你可能感兴趣的:(Mybatis)