事务的重要就不说了, 他有ACID特性: 即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)
mybaits包含两种类型的事务,
图片.png
是的没错就是 type="JDBC|MANAGED"
(1)使用JDBC的事务管理机制,就是利用java.sql.Connection对象完成对事务的提交
(2)使用MANAGED的事务管理机制,这种机制mybatis自身不会去实现事务管理,而是让程序的容器(spring)来实现对事务的管理, 也就是说需要用到容器提交事务才能起作用,否则是不可能有commit操作就能对数据库起作用的(但是我个人觉得这有点操蛋, 看下面问题)
但是我们平时在用mybatis的时候确定都能明白吗 ,比如为啥要回滚, 在什么时候回滚, 不说了 , 直接代码说明
图片.png
如上所述: 如果不commit的话其只会在回话中显示成功, 但是永远都不会和数据库有相关操作, 所以我们能够想到我们一般在做读写分离的时候将delete, update, insert放在一个数据库中操作, 对的没错 ,删除, 更新, 添加都需要commit才能作用! 如果将回话close将直接回滚事务
事务对批量操作的影响
如果是事务操作 ,如果操作成功的话其会返回操作成功的条数, 但是如果其中有一条是失败的所有都失败
https://www.cnblogs.com/grey-wolf/p/7117036.html
问题(可能还没研究深入 , 请各位看官多指教):
但是我个人的研究可能还存在问题, 在将事务类型设置成MANAGED的时候, 我也没有用别的容器, 但是还是对数据库起作用了
图片.png
网友评论