Connection#rollback的javadoc明确指出:
仅当禁用自动提交模式时才应使用此方法。
该方法存在类似的警告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 库不会打扰它?