【问题标题】:Autocommit mode for jdbc connection to Oracle from Java application从 Java 应用程序到 Oracle 的 jdbc 连接的自动提交模式
【发布时间】:2011-10-23 17:33:06
【问题描述】:

我是否必须调用connection.setAutoCommit(false) 才能将几个 DML 语句分组到一个事务中?我有点困惑,因为 jdbc 文档说在自动提交模式下创建了一个新连接。同时,Oracle 没有自动提交事务,如果 DML 语句不存在则开始一个新事务。所以,据我了解,connection.setAutoCommit(false) 是多余的(假设我不考虑切换到不同的 RDMS)。

谁能澄清一下?

谢谢。

【问题讨论】:

    标签: java oracle jdbc autocommit


    【解决方案1】:

    将 autocommit 设置为 true 实际上意味着发送到数据库的每个语句都将包含在 begin/commit 中。事务将隐式启动,但也将隐式提交。下一个语句也是如此。

    如果您希望多个语句成为单个事务的一部分,则需要将 autocommit 设置为 false,执行各种语句,最后显式调用 commit。

    【讨论】:

    • 感谢您让我走上正轨;看起来我把一个非常简单的概念过于复杂了:)
    • 实际上你可以通过在发送最后一条语句之前将 autocommit 设置为 true 来避免提交往返。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-17
    • 1970-01-01
    • 2012-04-04
    • 2014-04-06
    • 2013-09-29
    • 2017-11-08
    • 2014-03-31
    相关资源
    最近更新 更多