0
的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庫不會打擾它?
推理是,如果你還沒有禁用autoCommit,爲什麼你在代碼中調用'DbUtils.rollback(..)'或'DbUtils.commit(..)',如果你打電話給他們顯然是你應該注意的一個錯誤。老實說,現代試用資源,我發現很多'DbUtils'方法很無用。 –