嗯,我試圖在JPA中進行批量插入,但我認爲這不起作用。在Hibernate/JPA中使用批量插入
我的方法是這樣的:
public void saveBatch(List<? extends AbstractBean> beans) {
try {
begin();
logger.info("Salvando em batch " + beans.size() + " bean(s)");
for (int i = 0; i < beans.size(); i++) {
if (i % 50 == 0) {
entityManager.flush();
entityManager.clear();
}
entityManager.merge(beans.get(i));
}
commit();
} catch (Exception e) {
logger.error("Ocorreu um erro ao tentar salvar batch. MSG ORIGINAL: "
+ e.getMessage());
rollback();
throw new DAOException("Ocorreu um erro ao tentar salvar batch");
}
}
我IDEIA是,每50行Hibernate會令:
insert into tableA values(),(),()...
但看日誌,我看到一個INSERT每個合併()命令鏈接這樣的:
insert into tableA values()
insert into tableA values()
insert into tableA values()
insert into tableA values()
有什麼不對?這是對的 ?
什麼是您的JPA impl。這取決於。 你是否修改了JPA conf來啓用它? 如果是,如何? – davidxxx
我的jpa是2.1,使用hibernate。我沒有修改任何jpa配置。 – RonaldoLanhellas
可能的重複http://stackoverflow.com/questions/20285347/massive-insert-with-jpa-hibernate – Rob