【问题标题】:Can I switch off Oracle JDBC auto commit when closing a connection?关闭连接时可以关闭 Oracle JDBC 自动提交吗?
【发布时间】:2014-04-06 07:34:48
【问题描述】:

正如我们从 hereherehere 一开始就知道的那样,在与 Oracle 的 JDBC 连接上调用 close 会导致提交,尽管其他 JDBC 驱动程序可能并非如此。

我可以在专门为 Oracle 关闭之前进行回滚,但我很好奇是否有人知道我是否可以在打开连接时以类似于关闭自动提交的方式关闭它?谢谢。

【问题讨论】:

  • 正如您链接的第三个问题/答案所述,如果自动提交设置为 false,则应始终在关闭连接之前执行提交或回滚,否则行为取决于实现。
  • 我明白这一点并且已经做到了——谢谢(但这不是问题:))。
  • 那有什么问题呢?关闭什么?每个事务都必须提交或回滚,在这种情况下,如果您不专门执行其中一项操作,会发生什么情况取决于驱动程序。
  • 好吧,就我而言,它应该被回滚。我明白你的意思,谢谢(如果这是对你的评论的厚颜无耻的评论,我很抱歉)。问题是标题 - 我看不出问这个有什么问题。
  • 嗯,你的标题暗示你正在使用自动提交的连接,但你没有。不,您不能关闭某些驱动程序的 behavior 以在关闭时提交(当自动提交关闭时),因为未定义此行为。您需要自己进行回滚以确保安全。

标签: java oracle jdbc transactions


【解决方案1】:

例如,您可以尝试继承 Connection 类并在构造函数中设置 autoCommit = false

【讨论】:

  • 已经这样做了,谢谢,但它仍然会在调用 close 时提交。
猜你喜欢
  • 1970-01-01
  • 2018-09-09
  • 1970-01-01
  • 1970-01-01
  • 2014-03-07
  • 1970-01-01
  • 1970-01-01
  • 2012-08-28
  • 2012-02-21
相关资源
最近更新 更多