我正在尝试在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倍)性能成本。
提前谢谢。
发布于 2010-01-26 05:14:29
请看一下文档的Hibernate batch inserts部分。
https://stackoverflow.com/questions/2134351
复制相似问题