我有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个查询以进行更新?有没有办法追踪它?
答案 0 :(得分:1)
saveAll()
只是在每个实体上调用save()
的循环。别无选择,因为JPA没有任何方法可以一次保存多个实体。
这是否意味着不使用休眠批处理?否,因为Hibernate批处理恰好包含将插入查询分批进行分组,然后执行批处理。