gpt4 book ai didi

java - SQL 选择未提交导致缓存

转载 作者:行者123 更新时间:2023-11-28 23:40:58 25 4
gpt4 key购买 nike

我正在使用 Tomcat 和一个带有 mysql 数据库的 JDBC 连接池。当创建了 java.sql.Connection 并设置了#setAutoCommit(false),并且在没有提交的情况下执行了 select 语句,然后关闭了连接,它似乎将缓存的连接返回到池中。之后创建的后续连接在执行相同选择的情况下从数据库返回陈旧数据。这种行为看起来很奇怪,因为我被迫提交只执行选择的 session ,否则我看不到另一个节点反射(reflect)的更改。有没有解决此行为的方法,还是我必须提交每个选择?

最佳答案

问题在于如何为连接 API 定义契约。 commit[1] 和 rollback[2] 方法是在数据库上释放锁时。因为我在选择之后没有提交或回滚,所以当连接返回到池中时,这些锁会保持不变。因此,在执行选择后必须提交或回滚,以便可以释放连接中维护的锁。

[1] http://docs.oracle.com/javase/7/docs/api/java/sql/Connection.html#commit()[2] http://docs.oracle.com/javase/7/docs/api/java/sql/Connection.html#rollback()

关于java - SQL 选择未提交导致缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19669018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com