每个连接的JDBC Cache语句

时间:2014-08-01 03:14:26

标签: jdbc prepared-statement connection-pooling

我知道在使用preparestatement时,语句将被缓存以供下次使用,但我已经阅读了文档,其中说每个连接都是Cache,根据我的理解,这意味着每个连接都维护它自己的Cache。即连接A不能使用连接B中缓存的语句,即使这两个连接在同一个连接池中。


我想知道为什么连接池不能为其中的所有连接管理Cache,因此所有连接都可以重用该语句。

我的问题:我对此是对的吗?或者我只是误解了这个。如果我是对的,我上面提到的想法怎么样?可以这样实现吗?

1 个答案:

答案 0 :(得分:0)

语句句柄通常 - 链接到创建它的物理连接(不仅在JDBC端,而且在数据库端)。当连接关闭时,它也被删除/关闭/丢弃。由于它与连接相关联,因此不能从不同的连接使用句柄,因此语句缓存(如果有的话)是每个连接。

即使这在技术上是可行的,也可能存在其他问题(例如,如果连接具有不同的权限,则权限泄漏等)。