使用Spring Data JPA在大量实体上高效执行批量更新

mitkmikd  于 2023-04-12  发布在  Spring
关注(0)|答案(2)|浏览(458)

我有大量的记录,我需要使用Spring Data JPA有效地更新。记录数量数以千计,我目前使用save()方法循环的方法既慢又低效。有人能建议一种更好的方法来使用Spring Data JPA执行批量更新吗?

nmpmafwu

nmpmafwu1#

这很容易通过设置一个属性来完成:

spring.jpa.properties.hibernate.jdbc.batch_size=123

您将在循环中实现更新/插入,但Hibernate将尝试将它们批量发送到数据库。

lbsnaicq

lbsnaicq2#

如果你不需要从你的仓库访问回调,你可以简单地注入bean entityManager并从你的Hibernate Context中分离出来。

private final EntityManager entityManager;

public void someMethod(List<SomeObject> objects) {
    objects.forEach(someObject-> {
        res = someRepository.save(someObject);
        entityManager.detatch(res); // or use ´entityManager.clear();´ 
    });
}

这也可能是有用的;)
Why is JPA / Hibernate slowing down when loading a large amount of data in a Spring Boot application?

相关问题