JDBC事物回滚怎么不起作用

 我来答
bluemind_2004
2016-12-15 · TA获得超过964个赞
知道小有建树答主
回答量:539
采纳率:93%
帮助的人:296万
展开全部
JDBC 事务不回滚?
有两种情况,先看 autoCommit(true),在JDBC规范中有这样一段描述:
Newly created Connection objects are in auto-commit mode by default, which means that individual SQL statements are committed automatically when the statement is completed.

可看出,只要你的SQL 本身没有问题,JDBC就会自动提交,但是比如接入数据发生异常,抛出SQLException的时候事务不会回滚的。
所有通常会手工控制,但是这里还有一个坑,就是有些数据源,会使用代理模式,将真正的Connection 包裹起来(依据架构和组件的不同,可能会有很多层包裹),你需要getMeterConnection 后,在对元Connection设置AutoCommit ,否则无论你怎么写,轻者异常,重者不通知成为“悬案”。

如果你使用了JTA,事务不回滚,依然正常,JTA 不是所有的异常都回滚的,只有对unCheckException 才回滚,换句话说,只有对RuntimeException 或其子异常才回滚。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式