Использование FetchMode.SELECT с FetchType.EAGER в HibernateJAVA

Программисты JAVA общаются здесь
Ответить
Гость
 Использование FetchMode.SELECT с FetchType.EAGER в Hibernate

Сообщение Гость »


У меня есть две сущности: страница и комментарий

страница общедоступного класса{ частный внутренний идентификатор; частные комментарии List = new ArrayList(); @OneToMany(mappedBy = "страница") public List getComments() {возврат комментариев} } общественный класс Комментарий { частный внутренний идентификатор; частная строка msgText; личная страница Страницы; @ManyToOne @JoinColumn(name="page_id") общедоступная страница getPage() { возвратная страница } } На странице хранится коллекция комментариев. Каждый раз, когда я получаю страницу, я хочу, чтобы все комментарии загружались вместе с ней, поэтому мне нужно использовать FetchType.EAGER. По умолчанию используется FetchMode.JOIN

Проблема в том, что JOIN портит нумерацию страниц - когда я устанавливаю ограничение на 5, я получаю первое сообщение, а также 4 комментария (или 5 комментариев, я забыл). Вместо этого я должен получить первые 5 сообщений, а также все их комментарии.

Поэтому вместо этого я решил использовать FetchMode.SELECT.

Мои вопросы:
[*]Какова разница в производительности между FetchMode.SELECT вместе с FetchType.EAGER и FetchMode.JOIN? [*]Я знаю, что FetchType.LAZY может привести к проблеме с запросами N+1, если я последовательно вызываю getComments() для коллекции сущностей Page. Возникает ли эта проблема при использовании FetchMode.SELECT с FetchType.EAGER? (т. е. когда я загружаю коллекцию страниц, сколько запросов она будет сделать, чтобы немедленно загрузить все связанные с ними комментарии?) [*]Есть ли смысл использовать размер пакета с FetchMode.SELECT и FetchType.EAGER?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»