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(),(),()...
をしかし、私は、各マージ()コマンドリンクのための1つのINSERTを参照ログを見てこれは:
insert into tableA values()
insert into tableA values()
insert into tableA values()
insert into tableA values()
どうしたのですか?これは正しいです ?
あなたのJPAインプは何ですか?それはに依存しています。 有効にするためにJPA confを変更しましたか? はいの場合、どうですか? – davidxxx
私のjpaは2.1、休止状態を使用しています。私はjpa configで何も修正していません。 – RonaldoLanhellas
可能な複製http://stackoverflow.com/questions/20285347/massive-insert-with-jpa-hibernate – Rob