Вы должны использовать выборку / выборку объединения, если хотите избежать отложенного извлечения / принудительного извлечения.
Например, когда вы запрашиваете группу или список групп: select * from Group where id=??
Студенты не загружаются избазы данных, пока вы не сделаете что-то с group.getStudents ().Если вы по-прежнему находитесь внутри транзакции, вы затем загрузите студентов из базы данных, или, если вы находитесь вне транзакции, вы получите исключение для отложенной выборки.группы (ы) и все их ученики из базы данных сразу.
Так что вы должны всегда использовать fetch join?Нет. Только когда вам нужно ..
Если вы знаете, что каждый раз будете обращаться ко всем студентам всех групп, тогда имеет смысл просто получить их за один раз.Если вам вообще не нужен доступ к студентам, не имеет смысла использовать fetch ..
Это также причина, по которой использование FetchType.EAGER для коллекций, как правило, очень плохая идея!