我有大量的记录,我需要使用Spring Data JPA有效地更新。记录数量数以千计,我目前使用save()方法循环的方法既慢又低效。有人能建议一种更好的方法来使用Spring Data JPA执行批量更新吗?
nmpmafwu1#
这很容易通过设置一个属性来完成:
spring.jpa.properties.hibernate.jdbc.batch_size=123
您将在循环中实现更新/插入,但Hibernate将尝试将它们批量发送到数据库。
lbsnaicq2#
如果你不需要从你的仓库访问回调,你可以简单地注入bean entityManager并从你的Hibernate Context中分离出来。
entityManager
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?
2条答案
按热度按时间nmpmafwu1#
这很容易通过设置一个属性来完成:
您将在循环中实现更新/插入,但Hibernate将尝试将它们批量发送到数据库。
lbsnaicq2#
如果你不需要从你的仓库访问回调,你可以简单地注入bean
entityManager
并从你的Hibernate Context中分离出来。这也可能是有用的;)
Why is JPA / Hibernate slowing down when loading a large amount of data in a Spring Boot application?