Jpa batch выгрузка и сохранение большого количества записей в одном потоке
Есть задача предохранять данные из одной таблицы psg в другую. есть реализация на JDBC template c batch. мне интересно есть ли реализации на Jpa Batch чтобы частями вычитывать данные и сразу сохранять в одном потоке.
т.е. сейчас у меня сделано вычитывание и сохранение в цикле
for (int i = 0; i < sizeCycle; i++) {
int page = i * 100;
int size = i * 100 + 100 - 1;
Pageable pageable = PageRequest.of(page, size);
List<AccType> accTypeList = accTypeRepository.findAll(pageable).getContent();
accTypeRBCRepository.saveAll(accTypeList);
}
код отрабатывает, но меня смущает, что выглядит как-то коряво с
int page = i * 100;
int size = i * 100 + 100 - 1;
нет какого-то оптимизированного способа, чтобы запустить поток и в нем партиционно согласно batch_size данные вычитывались и сохранялись. т.е. например в таблице из которой читаю 1 млн записей. batch_size == 100 и так кусочками данные бы вычитывалиь и сохранялись в одном потоке.
настройки:
jpa:
show-sql: true
properties:
hibernate:
order_inserts: true
order_updates: true
batch_versioned_data: true
generate_statistics: true
jdbc:
batch_size: 100
naming-strategy: org.hibernate.cfg.EJB3NamingStrategy
Источник: Stack Overflow на русском