我有大约20k条记录要从Spring数据JPA查询中删除,查询与在某个特定日期之前删除所有记录有关。
我正在使用以下查询
dao.deleteByCreationDateBefore(new Date());
我认为此查询会针对每行删除命中数据库。
请告诉我有什么方法可以在这里使用批量删除吗?
此致
答案 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选项