Я ищу способ кэшировать подготовленные операторы в среде сервлета (в частности, Tomcat 5.5). Это предназначено для уменьшения количества раз, когда были созданы подготовленные операторы, то есть количество раз, которое вызывается connection.prepareStatement(sql)
.Что такое хорошая стратегия кэширования подготовленных операторов в Tomcat?
Моя первоначальная идея состояла в том, чтобы хранить объекты в сеансе, где ключ (имя атрибута) является самим запросом. Это также можно сделать лениво.
Однако, кто-то предупредил меня о том, что в зависимости от реализации драйвера JDBC к одному и тому же подготовленному оператору могут быть доступны два потока (или запросы) одновременно, в результате, например, при установке неправильных параметров. Поэтому доступ к этим объектам операторов должен быть синхронизирован.
Что было бы хорошей стратегией для достижения этой цели?
Есть ли способ, встроенный в tomcat для этого? Я вижу this answer, где он упоминает параметр DBCP poolPreparedStatements
, но это не совсем ясно из документации, если оно имеет то же значение, что и то, что я ищу.