批量插入inJPA

时间:2017-04-03 18:43:16

标签: java spring jpa openjpa

我有一个问题/困惑,当记录是奇数时,如何进行批量插入,例如

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条记录会发生什么,如果是,则插入

1 个答案:

答案 0 :(得分:0)

你最后正在调用em.getTransaction().commit();,这就是Javadoc为commit()读取的内容:

  

提交当前资源事务,编写任何未刷新的更改   到数据库。

因此,它将所有未刷新的更改写入数据库并提交事务。在您的问题中,3个记录将被刷新,并在for循环结束后写入数据库。

答案:您无需对代码进行任何更改,一旦for循环完成,它将自动插入这3条记录(或任何剩余记录)。