Как разрешаются именованные запросы с маркерами параметров в динамическом кэше операторов db2? - PullRequest
0 голосов
/ 08 июня 2011

У меня есть аннотированный объект, который содержит именованный запрос.Запрос содержит 3 маркера позиционных параметров.

Во время выполнения параметры устанавливаются и связываются перед сохранением оператора в кэше DB2.Следствием этого является то, что кэш заполнен множеством похожих SQL-операторов, и каждый оператор связывается снова и снова.Есть ли способ выполнить именованные запросы, такие как подготовленные операторы, чтобы SQL-файл связывался и хранился только один раз с вопросительными знаками в кеше DB2?

Я использую WLS 10.2 в качестве сервера приложений, eclipselink какпоставщик сохраняемости и DB2 как база данных.

Я попытался настроить eclipselink с помощью свойства

имя свойства = "eclipselink.jdbc.bind-parameters" value = "false"

Но в любом случае (по умолчанию - true) SQL-операторы хранятся с литералами в связке вместо символа?в кеше DB2.

Ждем любых подсказок или ответов.

Спасибо.

1 Ответ

0 голосов
/ 08 июня 2011

Вам нужно использовать,

property name = "eclipselink.jdbc.bind-parameters" value = "true"

, который является значением по умолчанию, false предотвратит кэширование операторов.

Вы также должны включить кэширование операторов. Это необходимо настроить в вашем DataSource, если вы используете DataSource. Если вы используете пул соединений EclipseLink, вы можете использовать,

property name = "eclipselink.jdbc.cache-reports" value = "true"

...