我有一个问题/困惑,当记录是奇数时,如何进行批量插入,例如
batchSize = 20;
em.getTransaction().begin();
for (int i = 0; i < 23; i++){
Book book = new Book(i, "JPA Batch Insert Example: " + i);
em.persist(book);
if (i % batchSize == 0 && i > 0) {
em.flush();
em.clear();
}
}
em.getTransaction().commit();
在这个例子中,将同时插入20条记录但是其余3条记录将记录这3条记录会发生什么,如果是,则插入
答案 0 :(得分:0)
你最后正在调用em.getTransaction().commit();
,这就是Javadoc为commit()
读取的内容:
提交当前资源事务,编写任何未刷新的更改 到数据库。
因此,它将所有未刷新的更改写入数据库并提交事务。在您的问题中,3个记录将被刷新,并在for
循环结束后写入数据库。
答案:您无需对代码进行任何更改,一旦for
循环完成,它将自动插入这3条记录(或任何剩余记录)。