在Tomcat中缓存准备好的语句的好策略是什么?
我正在寻找一种在servlet环境(特别是Tomcat5.5)中缓存准备好的语句的方法。这是为了减少创建准备语句的次数,即调用在Tomcat中缓存准备好的语句的好策略是什么?,tomcat,servlets,jdbc,synchronization,prepared-statement,Tomcat,Servlets,Jdbc,Synchronization,Prepared Statement,我正在寻找一种在servlet环境(特别是Tomcat5.5)中缓存准备好的语句的方法。这是为了减少创建准备语句的次数,即调用connection.prepareStatement(sql)的次数 我最初的想法是在会话中存储PreparedStatement对象,其中键(属性名)就是查询本身。这也可以懒散地完成 但是,有人提醒我,根据JDBC驱动程序实现的不同,同一条准备好的语句可能同时被两个线程(或请求)访问,例如,导致设置了错误的参数。因此,需要同步对这些语句对象的访问 实现这一目标的好策略
connection.prepareStatement(sql)
的次数
我最初的想法是在会话中存储PreparedStatement
对象,其中键(属性名)就是查询本身。这也可以懒散地完成
但是,有人提醒我,根据JDBC驱动程序实现的不同,同一条准备好的语句可能同时被两个线程(或请求)访问,例如,导致设置了错误的参数。因此,需要同步对这些语句对象的访问
实现这一目标的好策略是什么
tomcat中是否有内置的方法来执行此操作?我已经看到它在哪里提到了
poolPreparedStatements
DBCP参数,但是从文档中还不完全清楚它是否具有与我所寻找的相同的含义。我不确定其他数据库,但是如果您使用的是Oracle,JDBC客户端将缓存PreparedStatement。您可能希望查看您的数据库是否会这样做。PreparedStatement缓存通常由您使用的连接池提供
- 在中,您可以通过设置
- 在中,通过设置