如果postgres中的autocommit为false,则会自动回滚事务

时间:2015-01-13 06:55:53

标签: java postgresql transactions

我对模型层很陌生只需要在我们的代码中澄清如果autocommit是假的

Connection conn = DBUtil.getConnection(userDb);
conn.setAutoCommit(false);

我们得到一个与postgres无关的异常,如

if (response.getValue() != null) {   
    conn.commit();
}

如果响应对象是任意值,那么事务是否会在postgres中自动回滚。

谢谢

2 个答案:

答案 0 :(得分:2)

这取决于。如果关闭连接,则应由数据库回滚事务。如果您正在使用连接池,则在返回连接时,池应回滚事务。

然而,这可能取决于驱动程序以及连接池,因此您应该明确地执行提交和回滚,而不是依赖于驱动程序或池。

答案 1 :(得分:1)

可以肯定的是,明确地更好地回滚事务:

if (response.getValue() != null) {   
    conn.commit();
}
else {
    conn.rollback();
}