Я использую весеннюю загрузку (2.2.1) вместе с пружинными данными jpa.
В моем приложении запущена служба по расписанию, в которой я должен читать миллионы данных клиентов (с нумерацией страниц) для нескольких компаний. И после выполнения некоторых операций я должен обновить столбец состояния для этих пользователей. Для обновления статуса я использую собственный запрос (с использованием @Query
аннотации и nativeQuery=true
).
public void scheduledTask() {
List<Integer> companies = getCompanies();
for each company:
1. get x customers
2. do some operation
3. repeat step 1 -> 2 for all customers in a company
and then update the read status for the customers
}
После обработки некоторых записей клиентов состояние чтения не обновляется для обработанных записей, если есть какие-либо исключения. Кроме того, если обрабатывается несколько миллионов записей о клиентах, hibernate entity manager
закрывается.
При выполнении вышеуказанного процесса статус чтения обновляется только после обработки всех клиентов всех компаний.
Сейчас, Я хочу знать, есть ли эффективный способ загрузки и обновления данных клиента, чтобы в случае исключения мое обновление статуса чтения не потерялось.