mybatis自动提交事务管理
2017-08-22 16:28
260 查看
关于mybatis的事务的回滚与提交的官方说明如下:
事务控制方法
控制事务作用域有四个方法。 当然, 如果你已经选择了自动提交或你正在使用外部事务管 理器,这就没有任何效果了。然而,如果你正在使用 JDBC 事务管理员,由 Connection 实 例来控制,那么这四个方法就会派上用场:
void commit()
void commit(boolean force)
void rollback()
void rollback(boolean force)
默认情况下 MyBatis 不会自动提交事务, 除非它侦测到有插入, 更新或删除操作改变了 数据库。如果你已经做出了一些改变而没有使用这些方法,那么你可以传递 true 到 commit 和 rollback 方法来保证它会被提交(注意,你不能在自动提交模式下强制 session,或者使用 了外部事务管理器时) 。很多时候你不用调用 rollback(),因为如果你没有调用 commit 时 MyBatis 会替你完成。然而,如果你需要更多对多提交和回滚都可能的 session 的细粒度控 制,你可以使用回滚选择来使它成为可能。
注意MyBatis-Spring和MyBatis-Guice提供了声明事务处理,所以如果你在使用Mybatis的同时使用了Spring或者Guice,那么请参考它们的手册以获取更多的内容。
从官方说明可以看出如果要使用事务回滚,需使用connection来获取连接或者关闭session自动提交才能实现。
使用spring注入的方式,事务管理的方法,运行的debug如下,插入一条语句后断开连接
直接使用session的方式如下,没有事务管理,只能手动关闭连接。才会归还连接
事务是由spring来管理
事务控制方法
控制事务作用域有四个方法。 当然, 如果你已经选择了自动提交或你正在使用外部事务管 理器,这就没有任何效果了。然而,如果你正在使用 JDBC 事务管理员,由 Connection 实 例来控制,那么这四个方法就会派上用场:
void commit()
void commit(boolean force)
void rollback()
void rollback(boolean force)
默认情况下 MyBatis 不会自动提交事务, 除非它侦测到有插入, 更新或删除操作改变了 数据库。如果你已经做出了一些改变而没有使用这些方法,那么你可以传递 true 到 commit 和 rollback 方法来保证它会被提交(注意,你不能在自动提交模式下强制 session,或者使用 了外部事务管理器时) 。很多时候你不用调用 rollback(),因为如果你没有调用 commit 时 MyBatis 会替你完成。然而,如果你需要更多对多提交和回滚都可能的 session 的细粒度控 制,你可以使用回滚选择来使它成为可能。
注意MyBatis-Spring和MyBatis-Guice提供了声明事务处理,所以如果你在使用Mybatis的同时使用了Spring或者Guice,那么请参考它们的手册以获取更多的内容。
从官方说明可以看出如果要使用事务回滚,需使用connection来获取连接或者关闭session自动提交才能实现。
使用spring注入的方式,事务管理的方法,运行的debug如下,插入一条语句后断开连接
直接使用session的方式如下,没有事务管理,只能手动关闭连接。才会归还连接
事务是由spring来管理
相关文章推荐
- ThreadLocal模式下管理的Session会在事务提交后自动关闭
- Spring如何设置让事务自动提交和回滚?Spring两种事务管理方式的配置及使用
- ThreadLocal模式下管理的Session会在事务提交后自动关闭!(摘自http://zgdhj95.javaeye.com/blog/36353)
- Spring与Hibernate的整合,不配置事务管理器,事务会自动提交(Hibernate默认手动提交)
- ThreadLocal模式下管理的Session会在事务提交后自动关闭!
- Hibernate——ThreadLocal模式下管理的Session会在事务提交后自动关闭
- mybatis不提交事务获取主键
- oracle事务处理 自动提交
- MyBatis(6):MyBatis 集成 Spring 事务管理(下)
- 笔记之Servlet的会话管理技术(cookie、session)(应用:用户自动登录、防表单重复提交)
- 【php】mysql事务commit自动提交
- springmvc mybatis 声明式事务管理回滚失效,(checked回滚)捕捉异常,传输错误信息
- Postgresql:9.2.1的默认事务提交模式为手动提交(default)你可以设置称自动提交模式
- MyBatis+Spring 事务管理
- spring+mybatis使用事务管理不生效原因分析
- 深入理解MyBatis——数据源和事务管理
- Mybatis事务(一)事务管理方式(JDBC和MANAGED)
- MyBatis+Spring 事务管理
- spring整合 mybatis 事务管理不生效原因
- spring管理mybatis事务源码理解随记