仅在不处于自动提交模式时回滚和提交

时间:2017-06-01 14:41:17

标签: java jdbc apache-commons-dbutils

javadoc for Connection#rollback明确指出:

  

只有在禁用自动提交模式时才应使用此方法。

commit方法存在类似的警告。

然而,查看代码,例如在Apache commons DbUtils我只看到:

public static void rollback(Connection conn) throws SQLException {
        if (conn != null) {
            conn.rollback();
        }
}

使用实用程序函数来防止NPE并省略测试自动提交模式似乎很奇怪。我希望有以下几点:

public static void rollback(Connection conn) throws SQLException {
    if (conn != null) {
        final boolean autoCommit = (boolean) conn.getAutoCommit();
        if (!autoCommit)
            DbUtils.rollback(conn);
    }
}

javadoc中的警告(只有在禁用自动提交模式时才应调用rollback)实际上是在实践中观察到的,如果是这样,为什么成功的JDBC库不会打扰它呢? / p>

1 个答案:

答案 0 :(得分:-1)

启用auto-comit后,回滚方法无效。