【发布时间】:2010-10-31 02:20:24
【问题描述】:
我正在寻找一种在 servlet 环境(特别是 Tomcat 5.5)中缓存准备好的语句的方法。这是为了减少创建准备好的语句的次数,即调用connection.prepareStatement(sql) 的次数。
我最初的想法是在会话中存储PreparedStatement 对象,其中键(属性名称)是查询本身。这也可以懒惰地完成。
但是,有人提醒我,根据 JDBC 驱动程序的实现,同一准备好的语句可能会同时被 2 个线程(或请求)访问,从而导致例如设置错误的参数。因此,对这些语句对象的访问需要同步。
实现这一目标的好策略是什么?
是否有内置于 tomcat 的方法来执行此操作?我看到this answer 提到了poolPreparedStatements DBCP 参数,但从文档中并不清楚它是否与我正在寻找的含义相同。
【问题讨论】:
标签: tomcat servlets jdbc synchronization prepared-statement