【发布时间】:2011-01-09 05:06:38
【问题描述】:
我正在尝试在 MySQL+JBoss+Hibernate 应用程序中执行长达几千行的 'INSERT ON DUPLICATE KEY UPDATE'。它看起来像:
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 查询计划缓存中并占用大量堆空间。所以我想知道是否可以参数化这个查询,以便它在查询计划缓存中只存储一次。
有没有办法像这样参数化元组列表?理想情况下,我可以在setParameter() 中传递{ value1, value2, value3 } 集合的集合。使用 (:value1, :value2, :value3) 运行数千个单行更新很容易,但这会带来显着的 (2-3 倍) 性能成本。
提前致谢。
【问题讨论】:
标签: mysql hibernate orm jpa hql