嗯,我试图在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