尽管我可以看到围绕Hibernate和批量更新进行的大量讨论,但这里是我的具体场景,我希望能够从所有专家那里获得评论。 我通过Document对象列表进行迭代,对于每个文档,我需要使用Document对象的属性更新DOCUMENT_METADATA表。休眠和批量更新
我可以使用标准的JDBC 2.0批量更新来执行此操作。但是,JDBC使用将违背我在整个应用程序中使用Hibernate的软件标准,并且我讨厌做出例外。
为了使用Hibernate,我必须首先从给定文档ID的DocumentMetadata对象中读取Document,然后设置DocumentMetadata属性,然后更新表格。
我可以这样做
for each document {
//fetch DocumentMetadata object given the id from Document
//invoke setter on DocumentMetadata object
em.persist(DocumentMetadata);
if (count % 50 == 0) {
em.flush(); //flush a batch of updates and release memory:
em.clear();
}
}
对于n条记录(我将运行大约10,000记录一次),作为 我没有做我n个最好的情况下,选择= 1个更新使用Hibernate的方法以上?鉴于我的表的大小(DOCUMENT_METADATA表有超过100列和100万条记录),我担心我会遇到comapred to JDBC方法的性能问题。
ANy suggestions?
感谢 KOB
从技术上讲,你并不完全使用“休眠”。您正在使用JPA。你的JPA实现恰好是Hibernate。您可以在JPA上下文中提出这个问题。 – BalusC