Список списка именованных параметров в EJBQL / HQL - PullRequest
1 голос
/ 25 января 2010

Я пытаюсь выполнить длинный 'INSERT ON DUPLICATE KEY UPDATE' с несколькими тысячами строк в приложении MySQL + JBoss + Hibernate. Это выглядит примерно так:

INSERT INTO Table (field1, field2, field3) VALUES
(value1_1, value2_1, value3_1),
(value1_2, value2_2, value3_2),
(value1_3, value2_3, value3_3),
...
ON DUPLICATE KEY UPDATE ...

Это нормально работает как собственный запрос, где я строю строку запроса в цикле, но сами длинные строки запроса сохраняются в кэше плана запросов Hibernate и занимают много места в куче. Поэтому мне интересно, можно ли параметризировать этот запрос, чтобы он хранился только один раз в кэше плана запросов.

Есть ли способ параметризации списка кортежей, подобных этому? В идеале я мог бы передать коллекцию из { value1, value2, value3 } коллекций в setParameter(). Достаточно просто запустить тысячи однострочных обновлений с (:value1, :value2, :value3), но это приводит к значительному (в 2-3 раза) снижению производительности.

Заранее спасибо.

1 Ответ

0 голосов
/ 26 января 2010

Взгляните на пакетные вставки Hibernate раздел документации.

...