Почему при bidirectional связи не возникает бесконечное число запросов?
Добрый день!
Интересует следующая ситуация: например, есть сущности User и Role. Связь bidirectional many-to-many, fetchType Eager
Почему программа не уходит в бесконечное число запросов, ведь для того, чтобы получить User, необходимо сначала получить Role, а для получения Role нужно загрузить поле с User и т.д.
Можете, пожалуйста, объяснить как это происходит "под капотом"?
Потому что Hibernate разрабатывали не дураки, библиотека сначала строит ациклический граф отношений, а потом генерирует по нему SQL-запрос. В тех местах, где направления отношений неочевидны, используется атрибут mappedBy соответствующих аннотации.