java - PreparedStatement 缓存 - 这是什么意思(它是如何工作的)

标签 java mysql hibernate jdbc c3p0

我正在使用例如 c3p0 和一些已定义的“maxStatements”来进行 preparedStatement 缓存。 这个缓存到底做了什么?它缓存什么样的数据。在什么级别(数据库,应用程序,..)? 从例子中理解它会很好。例如我有一个查询

select * from sometable where somecolumn=?

现在我在未缓存的准备好的语句中发送它。 现在我发送它并且它被缓存了。 有什么区别。第一种情况和第二种情况发生了什么。在第一种情况和第二种情况下发送到数据库服务器的是什么?

谢谢。

最佳答案

如果没有缓存,每次您从 Connection 请求一个 PreparedStatement 时,您都会得到一个新的 PreparedStatement。使用缓存,如果您提供相同的 SQL 字符串,您将经常获得完全相同的 PreparedStatement 类型的 Java 对象。如果您为 PreparedStatement 提供相同的 SQL,即使使用不同的参数,数据库通常可以重用执行计划等信息,但前提是您继续使用相同的 PreparedStatement。缓存不需要您的应用保留该 PreparedStatement 引用本身,从而使这变得更容易。

关于java - PreparedStatement 缓存 - 这是什么意思(它是如何工作的),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12141036/

相关文章:

mysql - 在 Latin 1 --> UTF-8 中是否存在我需要修复的隐藏编码错误?

mysql - 如何将 ACL Node js 角色与数据库 MySQL 中的用户连接(sequelize)

java - 在 spring mvc 3.0 中使用 @Valid 时出错

java - 如何使用 JPA 2.0 保留子类型列表?

java - Hibernate多对多双向存储

java - 协议(protocol)获取Java URL

java - XML - 在节点上使用文档方法

java - 未设置 Spymemcached 操作处理节点

java - 声明为 Final 的经典变量是否包含与非 Final 变量不同的内存段?

PHP session 在登录后似乎不起作用! Wamp - 创建/登录 4 个 session ?