Что делает Hibernate.initialize?
Обычно упоминаемая документация говорит только о
Hibernate.initialize(entity.lazyCollection)
Есть ли смысл в
Hibernate.initialize(entity)
Ответ 1
Я бы сказал, да, если Entity имеет лениво инициализированное поле, например. некоторые большие данные BLOB или CLOB или ленивые взаимно-однозначные ассоциации. См. 20.1.8. в документации для первого и 20.1.3 для последней.
См. также:
20.1.4. Инициализация коллекций и прокси-серверов
Ответ 2
Я согласен с Аланом Хэем, вот мой опыт, у меня была эта проблема при запуске тестов JUNit, некоторые из ленивых объектов не загружались при попытке загрузить объекты в другой сеанс. Мне пришлось вызвать Hibernate.initialize(Object) для загрузки ленивых объектов в память.
Ответ 3
Hibernate в некоторых случаях возвращает прокси-объект, например, ленивую коллекцию или Session.load() и т.д. Поэтому, если у вас есть прокси-объект и вы хотите создать реальный, вы можете его вручную инициализировать.
Ответ 4
Вскоре Hibernate.initialize() создает другой запрос для извлечения объекта в контексте сохранения. Когда объект загружается с нетерпением, JPA делает только один запрос для извлечения объекта. Таким образом, еще одно различие - это числовые вызовы на сервер