Я думаю, что вы слишком беспокоитесь, подготовленные операторы уже имеют несколько уровней кэширования:
- На уровне базы данных: приличная база данных будет повторно использовать план доступа для данного подготовленного оператора.
- На уровне пула соединений: приличный пул соединений будет кэшировать
PreparedStatement
объектов для каждого соединения с базой данных в пуле (и возвращать кэшированный PreparedStatement
при последующих вызовах preparedStatement
для соединения).
Так что, на самом деле, я бы даже сказал, что вы, возможно, смотрите не в ту сторону. Если вы хотите разработать масштабируемое решение, рекомендуется использовать пул соединений и не удерживать соединение дольше, чем необходимо, и освобождать его (для освобождения ресурсов базы данных), когда вы закончите с ним.