【问题标题】:JDBC RollBack After Connection Close连接关闭后的 JDBC 回滚
【发布时间】:2016-10-09 22:11:31
【问题描述】:

假设连接已打开,并且自动提交设置为 false 以启动事务。事务完成后,我想回滚任何更改以使数据库恢复到我开始事务之前的状态。

我的问题是,在事务期间连接被关闭,因此所有更改都在那时提交。

有没有办法将数据库的状态回滚到初始事务开始之前?

是的,我尝试使用 Savepoints 无济于事。

【问题讨论】:

  • 您在使用 Oracle 吗? AFAIK,它是少数在连接关闭时提交而不是回滚的驱动程序之一。

标签: java sql jdbc transactions


【解决方案1】:

这真的取决于你在做什么、为什么以及如何做。

  • 如果有对事务的引用,可以自己回滚。
  • 如果不行,最后能抛出异常吗?
  • 如果您只想测试事物,为什么不使用像 H2 这样的嵌入式数据库,并且每次都从头开始?
  • 如果 H2 没有切断它,请查看 testcontainers

【讨论】:

  • 不幸的是,我有点卡住了这种测试方式,只使用 JDBC 库。我有我的测试,在它们之前我开始一个事务,在我回滚之后。我正在测试的代码设置为在每次插入、更新等之后关闭连接...
猜你喜欢
  • 2015-02-11
  • 2011-10-10
  • 1970-01-01
  • 2012-11-03
  • 1970-01-01
  • 2012-08-28
  • 2015-12-22
  • 2011-06-23
  • 2019-08-16
相关资源
最近更新 更多