Стремится ли загрузка решить проблему n + 1? (SpringBoot / спящий режим) - PullRequest
1 голос
/ 29 января 2020

Есть много статей о проблеме n + 1, но обычно они начинают объяснять, как ее решить с помощью пользовательских методов.

Мой вопрос общий: решает ли готовая загрузка проблему n + 1?

(другими словами: есть ли вероятность появления проблемы n + 1, когда мы используем энергичную загрузку? Есть ли вероятность появления проблемы n + 1, когда загрузка выполняется только из-за задержки?)

Можно рассмотреть У меня есть Car сущность и Collection<Wheel> с @OneToMany отношениями. Предположим, я использую SpringBoot> 2, Hibernate

Ответы [ 2 ]

0 голосов
/ 30 января 2020

Извините, если мои предыдущие ответы вам не были ясны, но вы уже поняли это.

условие для n + 1 проблемы: Ленивое извлечение + существующий сеанс (чтобы предотвратить исключение lazyinitializationexception )

Таким образом, вы должны использовать «FETCH JOIN» или EntityGraph, чтобы избежать проблемы N + 1.

0 голосов
/ 29 января 2020

Если у вас есть только эти две сущности, да, это решает проблему N + 1. Однако, это не всегда так с приложениями реального мира. И если вы продолжите использовать активную выборку для всех отношений, это вызовет другие проблемы, такие как перегрузка.

...