JDBC事务和数据库事务嵌套的讨论 .
首先必须执行con.setAutoCommit(false)方法,将JDBC事务设置为手动提交,否则手动提交con.commit()无效,手动回滚con.rollback()引发SQLException:AutoCommit 模式设置为“true”时,无法调用回滚操作。
我们执行con.setAutoCommit(false)方法,将JDBC事务设置为手动提交,然后分9种情况讨论JDBC事务和数据库事务。
描述:存储过程里面有一条INSERT语句在数据库事务管理下,而另一条INSERT语句在JDBC事务管理下,假定我们现在执行的语句均不违反约束。
情况一:JDBC事务和数据库事务都既不提交也不回滚
结果:未出现任何异常,但语句也并未提交。
情况二:JDBC事务既不提交也不回滚,数据库事务提交
结果:未出现任何异常,但两条语句均未提交。
情况三:JDBC事务既不提交也不回滚,数据库事务回滚
结果:未出现任何异常,但两条语句均未提交。
情况四:JDBC事务和数据库事务都回滚
结果:在执行con.rollback()的时候出现SQLException:服务器无法继续执行该事务,说明: 3600000001。当然,两条语句均未成功。
情况五:JDBC事务回滚,数据库事务提交
结果:虽然数据库事务提交,但是两条语句均未成功,JDBC事务的回滚影响到了数据库事务。
情况六:JDBC事务回滚,数据库事务既不提交也不回滚
结果:未出现任何异常,但两条语句均未提交。
情况七:JDBC事务提交,数据库事务回滚
结果:在执行con.rollback()的时候出现SQLException:服务器无法继续执行该事务,说明: 3600000001。当然,两条语句均未成功。
情况八:JDBC事务和数据库事务都提交
结果:执行一切顺利,两条语句都正确执行。
情况九:JDBC事务提交,数据库事务既不提交也不回滚
结果:未出现任何异常,但两条语句均未提交。
总结:成功提交的情况只有一种——JDBC事务和数据库事务都提交;若数据库事务提交或回滚,则con.commit()失效,而con.rollback()则会报异常。
推荐配置:若JDBC事务和数据库事务同时存在,数据库事务把提交和回滚的情况配完整,而JDBC事务只需执行con.commit()方法,它会根据数据库事务的情况自动判断是否真正提交。
JDBC事务和数据库事务嵌套的讨论 .的更多相关文章
- 跟我学Spring3(9.1):Spring的事务之数据库事务概述
原文出处: 张开涛 9.1 数据库事务概述 事务首先是一系列操作组成的工作单元,该工作单元内的操作是不可分割的,即要么所有操作都做,要么所有操作都不做,这就是事务. 事务必需满足ACID(原子性.一致 ...
- 【JDBC核心】数据库事务
数据库事务 概述 事务是逻辑上的一组操作,或者说一个独立的工作单元.事务内的语句,要么全部执行成功,要么全部执行失败. 事务处理 数据一旦提交,就不可回滚.数据意味着提交的情况: 当一个连接对象被创建 ...
- JDBC高级篇(MYSQL)—— JDBC中初涉数据库事务
注意:其中的JdbcUtil是我自定义的连接工具类:代码例子链接: package d_transaction; import java.sql.Connection; import java.sql ...
- 正确理解Spring事务和数据库事务和锁
Lock wait timeout exceeded; try restarting transaction解决方案 参考文章 Spring中@Transactional事务回滚 http://www ...
- 【Spring】Spring的事务管理 - 1、Spring事务管理概述(数据库事务、Spring事务管理的核心接口)
Spring事务管理概述 文章目录 Spring事务管理概述 数据库事务 什么是Spring的事务管理? Spring对事务管理的支持 Spring事务管理的核心接口 Platform Transac ...
- 开涛spring3(9.1) - Spring的事务 之 9.1 数据库事务概述
9.1 数据库事务概述 事务首先是一系列操作组成的工作单元,该工作单元内的操作是不可分割的,即要么所有操作都做,要么所有操作都不做,这就是事务. 事务必需满足ACID(原子性.一致性.隔离性和持久性 ...
- Spring的事务 之 9.1 数据库事务概述 ——跟我学spring3
9.1 数据库事务概述 事务首先是一系列操作组成的工作单元,该工作单元内的操作是不可分割的,即要么所有操作都做,要么所有操作都不做,这就是事务. 事务必需满足ACID(原子性.一致性.隔离性和持久性 ...
- SQL 数据库事务 存储过程练习
数据库事务: 数据库事务(Database Transaction) 是指作为单个逻辑工作单元执行的一系列操作. 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源. ...
- Redis 如何与数据库事务保持一致
考虑一个问题,redis 如何 与 数据库保持一致性的问题. 举栗子:如果我们在开发过程中遇到这样的一种情况,我们删除 redis中token 的同时 也需要修改数据库中 储存的 token 的状态为 ...
随机推荐
- Robot Framework_Ride(Settings)
Settings 不管是测试套件还是测试用例都会有一个“Settings>>”的按钮,因为它默认是被折叠起来的,所以,一般不太容易发现它,更不知道点击它之后是可以展开的 1.测试用例的 S ...
- table定位
Table定位 在 web 页面中经常会遇到 table 表格,特别是后台操作页面比较常见.本篇详细讲解 table 表格如何定位. 1.1 table特性 1.table 页面查看源码一般有这几个明 ...
- 013-PaymentUtils工具类模板
package ${enclosing_package}; import java.io.UnsupportedEncodingException; import java.security.Mess ...
- JavaEE_XMind总结
1 Servlet 2 ServletContext 3 HttpServletResponse 4 HttpServletResquest 5 Cookie
- css3画半圆
border-radius制作半圆与制作圆形的方法是一样的,只是元素的宽度与圆角方位要配合一致,不同的宽度和高度比例,以及圆角方位,可以制作上半圆.下半圆.左半圆和右半圆效果.例如:.semicirc ...
- 日调度万亿次,微服务框架TSF大规模应用——云+未来峰会开发者专场回顾
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 演讲者:张浩 腾讯云中间件产品负责人 背景:众多开发者中,一定经历类似的甜蜜烦恼,就是当线上业务规模越来越大,系统分支发展越来越多的时候,初 ...
- Boost application performance using asynchronous I/O-ref
http://www.ibm.com/developerworks/linux/library/l-async/?S_TACT=105AGX52&S_CMP=cn-a-l Introducti ...
- sz的博客感想
https://www.cnblogs.com/freeflying/p/4796369.html 在很多人眼里,当把中学和大学对比起来的时候,大学只能用一个字形容:“渣”.我的大学前两年过得比较随性 ...
- springboot定时任务,去掉指定日期
今天用springboot写到一个需求:每周定时发送任务,但是要避开法定节假日. 网上找了些博客看,主要参考了https://www.cnblogs.com/lic309/p/4089633.html ...
- [H5表单]html5自带表单验证体验优化及提示气泡修改
慕课网之前录制的视频,js/jquery各种宽高的理解和应用,最近终于上线了.还有一个html5左侧导航没有上线!最近慕课网系列课程让我录制一个html5表单验证的课程.今天就稍微说一下表单验证!另外 ...