JPA выборка против присоединений. Являются ли объединения устаревшими? - PullRequest
3 голосов
/ 23 марта 2012

Хорошо.Я знаю различия между ними, но я должен избегать объединений и просто использовать fetch или joinfetch в любом случае для запроса атрибутов объекта.Допустим, я хочу список студентов группы.Должен ли я запросить группу и получить доступ к студентам.Или, может быть, запросить группу, объединяющуюся со студентами.Или оба одинаковы.

Я работаю без двунаправленных отношений.

1 Ответ

5 голосов
/ 23 марта 2012

Вы должны использовать выборку / выборку объединения, если хотите избежать отложенного извлечения / принудительного извлечения.

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

Так что вы должны всегда использовать fetch join?Нет. Только когда вам нужно ..

Если вы знаете, что каждый раз будете обращаться ко всем студентам всех групп, тогда имеет смысл просто получить их за один раз.Если вам вообще не нужен доступ к студентам, не имеет смысла использовать fetch ..

Это также причина, по которой использование FetchType.EAGER для коллекций, как правило, очень плохая идея!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...