давай я дам ответ и мы эту тему не поднимаем больше, окей? есть
@jvmchat1. N+1 - решение первое, разделить загрузку, отдельно загружать плоскую сущность, отдельно ее детишек;
решение второе -
@EntityGraph, конкретно указать что надо подтянуть, тогда не будет дополнительного запроса и будет join
2. По апдейту
если ты сначала вытянешь всех, во-первых это будет долго очень, во-вторых возможен OOM
если потом еще это обновить - возможен опять OOM
есть конечности хитрости со сбросом кэша, порционной выборкой, но объекты это не обнулит, нагрузка большая на GC будет
адекватное решение: jpql/native query update
entityManager.createQuery/или над методом в спринг дате
главное не забыть указать сбросить кэш транзакции, если используется нативный запрос