Я ищу способ достижения кэширования PreparedStatement, чтобы сохранить воссоздание объектов PreparedStatement для запросов, которые уже были выполнены в прошлом.
Есть ли какой-нибудь способ, позволяющий добиться этого с помощью Tomcat? Или я должен сам запрограммировать этот кеш?
Я полагаю, что tomcat использует commons-dbcp , а commons-dbcp поддерживает готовый пул операторов.
проверить здесь .
poolPreparedStatements false Включить готовый пул операторов для этого пула.
Подготовленное кэширование операторов выполняется вашим пулом соединений JDBC или драйвером JDBC, не от Tomcat.
Драйвер JDBC DB2 (JCC) использует свойство соединения JDBC, например maxStatements = 10; и он кеширует операторы для соединения. Пул не должен их кэшировать.
Вы не указали свою базу данных, но если это SQL Server, драйвер jTDS сделает это для вас. Все это абстрагировано, так что вам не нужно писать какой-либо волосатый кеширующий код.
Смотрите здесь: http://jtds.sourceforge.net/faq.html#preparedStatmentMemoryLeak
Возможно, я что-то упускаю в том, что вы спрашиваете, но если вы делаете свои запросы в "raws" JDBC, то, по сути, все, что вам нужно сделать, это оставить соединение открытым и перейти к ссылке PreparedStatement.