JPA saveall方法是否使用休眠批处理来更新/插入

时间:2019-04-05 08:08:08

标签: mysql spring hibernate jpa

我有1000个实体要在MySQL数据库中更新,因此如果我使用myRepository.saveAll(List<Entity>),它会在内部使用休眠批处理来更新表。我正在使用下面的hibernate属性进行批处理更新/插入

spring.jpa.properties.hibernate.jdbc.batch_size=100
spring.jpa.properties.hibernate.order_inserts=true
spring.jpa.properties.hibernate.order_updates=true

我想知道JPA是执行10个查询以进行批量更新还是与JPA save(Entity)方法相同并执行1000个查询以进行更新?有没有办法追踪它?

1 个答案:

答案 0 :(得分:1)

saveAll()只是在每个实体上调用save()的循环。别无选择,因为JPA没有任何方法可以一次保存多个实体。

这是否意味着不使用休眠批处理?否,因为Hibernate批处理恰好包含将插入查询分批进行分组,然后执行批处理。