批量删除Spring数据JPA

时间:2017-06-28 09:03:24

标签: spring-data-jpa batch-delete

我有大约20k条记录要从Spring数据JPA查询中删除,查询与在某个特定日期之前删除所有记录有关。

我正在使用以下查询

dao.deleteByCreationDateBefore(new Date());

我认为此查询会针对每行删除命中数据库。

请告诉我有什么方法可以在这里使用批量删除吗?

此致

1 个答案:

答案 0 :(得分:0)

spting数据不支持批量操作。

如果可能的话,尝试使用简单的删除操作,例如:操作非常快(比删除快)

从SOME_ENTITY / TABLE中删除其中CreationDate<新日期()/ curentDate

如果您的dao方法按记录删除记录: 但你可以用dao级别的hibernate / jpa来实现它,比如来自Hibernate/JPA Batch Insert and Batch Update Example的来自持久化的网站的例子:

    em.getTransaction().begin();
    for (int i = 0; i < 100; i++){
        Book book = new Book(i, "Hibernate/JPA Batch Insert Example: " + i);
        em.persist(book);

        if (i % batchSize == 0 && i > 0) {
            em.flush();
            em.clear();
        }
    }
    em.getTransaction().commit();

用于休眠: 这里是文章How to batch INSERT and UPDATE statements with Hibernate,请阅读“配置hibernate.jdbc.batch_size”。 hibernate for hibernate.jdbc.fetch_size和hibernate.jdbc.batch_size的Hibernate JDBC and Connection Properties选项