@turdubekov
Студент

Как обновить большие данные в Hibernate?

У меня есть сущность: А, который хранить в себе другие сущности (B, C)
Вопрос: Если я хочу обновить данные сущности A (включая B и C)
мне их надо втянуть из сущности A и делать: child.setOldChildValue.(newChildValue) или есть более адекватный способ?

P.s Может ли мне помочь тут - cascade = CascadeType.REFRESH)?

Заранее спасибо!
  • Вопрос задан
  • 94 просмотра
Решения вопроса 1
azerphoenix
@azerphoenix Куратор тега Spring
Java Software Engineer
Добрый день.
Читать все данные из БД разом в List<Foo> или любую другую коллекцию не самая лучшая идея.
Соответственно, можно вместо коллекций использовать стримы.
Т.е. Получить Stream<Foo>

Пример,
FooRepository {

@QueryHints(value = {
            @QueryHint(name = HINT_FETCH_SIZE, value = "1000"),
            @QueryHint(name = HINT_CACHEABLE, value = "false"),
            @QueryHint(name = READ_ONLY, value = "true")
    })
    @Query(value = "SELECT DISTINCT f FROM Foo f")
    @Transactional(readOnly = true)
    Stream<Foo> findFoos();

}


Ну а дальше остается распараллелить стрим при помощи parallelStream()
И произвести необходимые операции. Например, вызвать метод map() и в конце сохранить...

Если нужно данную операцию производить периодически, то к методу, который будет производить операцию, добавьте @Async и используйте @Scheduled (или возможности Spring Batch, Spring Quartz)

Для более подробного ответа нужно больше информации.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы