【发布时间】:2009-06-03 13:22:47
【问题描述】:
我正在寻找一种方法来实现 PreparedStatement 缓存,以便为过去已经执行的查询节省重新创建 PreparedStatement 对象。
是否有一些内置方法可以使用 Tomcat 实现这一目标?还是我必须自己编程这个缓存?
【问题讨论】:
标签: java tomcat caching prepared-statement
我正在寻找一种方法来实现 PreparedStatement 缓存,以便为过去已经执行的查询节省重新创建 PreparedStatement 对象。
是否有一些内置方法可以使用 Tomcat 实现这一目标?还是我必须自己编程这个缓存?
【问题讨论】:
标签: java tomcat caching prepared-statement
我相信 tomcat 使用 commons-dbcp 并且 commons-dbcp 支持准备好的语句池。
查看here。
poolPreparedStatements false 为此池启用准备好的语句池。
【讨论】:
准备好的语句缓存由 JDBC 连接池或 JDBC 驱动程序完成,不是由 Tomcat 完成。
【讨论】:
您没有说明您的数据库,但如果它是 SQL Server,则 jTDS 驱动程序会在内部为您执行此操作。这一切都被抽象出来了,所以你不需要编写任何毛茸茸的缓存代码。
请看这里:http://jtds.sourceforge.net/faq.html#preparedStatmentMemoryLeak
【讨论】:
DB2 JDBC 驱动程序 (JCC) 使用 JDBC 连接属性,例如 maxStatements=10;它确实缓存了连接的语句。池不需要缓存它们。
【讨论】:
也许我在你所问的内容中遗漏了一些东西,但如果你在“原始”JDBC 中进行查询,那么基本上你需要做的就是保持连接打开并继续引用PreparedStatement。
【讨论】: