Я использую Hibernate 3,6
Пользователь класс объект
Контакта является класс сущности
Пользователя имеет набор < Контакта >
Отношение однонаправленное и отображаются в один-к -многие.
Я пробовал следующие ленивые комбинации загрузки и извлечения. Вот список моего понимания и фактические результаты
отложенной загрузки и Fetch стратегия
с session.get (User.class, < некоторые идентификатор пользователя >) или Session.load (User.class, < некоторые USERID >)
lazy fetch result
* true join ignores lazy loading
* 1 select for retrieving the User and his contacts with a left outer join
* select 1 select for a User record
* 1 select for all contacts of the user
* subselect 1 select for a User record
* 1 select for all contacts of the user
* false join 1 select for retrieving the User and his contacts with a left outer join
* select 1 select for a User record
* 1 select for all contacts of the user
* subselect 1 select for a User record
* 1 select for all contacts of the user
с session.createQuery (от пользователя)
lazy fetch result
* true join 1 select for all User records
* 1 select for each User record to retrieve their contacts
* respect lazy loading
* probable n + 1
* select 1 select for all User records
* 1 select for each User record to retrieve their contacts
* probable n + 1
* subselect 1 select for all User records
* 1 sub-select to retrieve all contact records in one go
* false join 1 select for all User records
* 1 select for each User record to retrieve their contacts
* probable n + 1
* select 1 select for all User records
* 1 select for each User record to retrieve their contacts
* probable n + 1
* subselect 1 select for all User records
* 1 sub-select to retrieve all contact records in one go
Вот несколько вопросов, которые у меня есть:
- Правильно ли я понимаю?
- С session.get(), когда lazy = true, fetch = subselect, почему Hibernate не выполняет подзапрос? Наверное, это потому, что это абсолютно необходимо. Я прав ?
- С session.get(), когда lazy = false, fetch = subselect, почему Hibernate не выполняет подзапрос? Он должен выполнить один здесь, но это не так. Интересно, почему ?
- С session.createQuery() когда lazy = true, fetch = join, почему Hibernate ленивая загрузка? Раньше этого не делалось с session.get()
- С session.createQuery(), когда lazy = false, fetch = join, почему Hibernate не использует соединение?
Заранее спасибо
Эй, ребята! Мне нужно несколько быстрых указателей на этом посту. Надеюсь получить отклик. Благодарю. – Xan