Использует ли JPA saveall метод пакетного режима гибернации для обновления / вставки - PullRequest
0 голосов
/ 05 апреля 2019

У меня есть 1000 сущностей для обновления в базе данных MySQL, поэтому, если я использую myRepository.saveAll(List<Entity>), использует ли он внутренне пакет hibernate для обновления таблицы.Я использую свойство 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 Ответ

1 голос
/ 05 апреля 2019

saveAll() - это просто цикл, вызывающий save() для каждого объекта. Это не может быть ничто иное, так как у JPA нет способа сохранить несколько объектов одновременно.

Означает ли это, что пакетный режим гибернации не используется? Нет, потому что пакетная обработка Hibernate состоит именно в группировании запросов на вставку в пакетах и ​​выполнении пакетов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...