Я пытаюсь выполнить длинный 'INSERT ON DUPLICATE KEY UPDATE'
с несколькими тысячами строк в приложении MySQL + JBoss + Hibernate. Это выглядит примерно так:Список именованных параметров в EJBQL/HQL
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-3x) эксплуатационными расходами.
Заранее спасибо.