我在Tomcat上有一个用Java编写的webapp,默认情况下所有连接都应该是autoCommit=false
。现在,如果我只在事务中运行SELECT语句。我还需要拨打commit()
还是仅仅关闭连接就足够了?
值得的是:我使用的是Oracle 11.2。
有一个similar question但实际上没有给出这个案例的答案。
答案 0 :(得分:3)
关闭连接就足够了,无需拨打commit
或rollback
。
但根据connection.close(),调用提交或回滚是recommended。
答案 1 :(得分:1)
Select语句不会干扰底层模型或模型中包含的数据。关闭连接而不调用与事务相关的任何命令(如 commit
)是安全的。
实际上打了那个。在我的第一个答案中,我没有考虑过对模型做出的相邻选择。假设您执行select id from users where age > 20
并使用select id from users where age = 20
进行跟进,这些查询之间所做的任何更新都会影响选择的ACID性质,并在2个查询中返回重复结果。为了保证一致的结果,您需要使用commit()将两个选择包装在同一事务中。
所以是的,提交您的选择是有意义的。