【问题标题】:Batch Insertion inJPAJPA 中的批量插入
【发布时间】:2017-04-03 18:43:16
【问题描述】:

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

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

【问题讨论】:

标签: java spring jpa openjpa


【解决方案1】:

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

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

因此,它将所有未刷新更改写入数据库并提交事务。在您的问题中,将取消刷新 3 条记录,并在 for 循环完成后将其写入数据库。

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

【讨论】:

    猜你喜欢
    • 2011-02-15
    • 1970-01-01
    • 2021-06-05
    • 2018-05-17
    • 2013-06-28
    • 2010-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多