关于jave在oracle驱动下事务提交与回滚问题

一直以来,都认为Connection如果设置了setAutoCommit(false)后,启动手工事务提交,必须手工进行commit或者rollback才行。今天正好遇到一个问题,结果大跌眼镜。

于是测试了一下,结果如下(请注意在oracle驱动下,其他环境未知):

1、设置了setAutoCommit(false)后执行后续DML的数据更新操作,没有显式手工进行commit或者rollback,最后设置setAutoCommit(true),后关闭连接,默认提交成功。

2、设置了setAutoCommit(false)后执行后续DML的数据更新操作,执行两段sql更新,中间rollback,第一部分回滚,第二部分不显式手工进行commit,默认提交。

3、设置了setAutoCommit(false)后执行后续DML的数据更新操作,没有显式手工进行commit或者rollback,最后没有设置setAutoCommit(true),关闭连接,默认提交成功。


小结:设置了setAutoCommit(false)后,除非显式rollback,否则默认提交;没有任何显式commit或rollback,设置设置setAutoCommit(true)或者关闭连接,之前的事务也会默认提交。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值