Подтвердить что ты не робот

Что делает Hibernate.initialize?

Что делает Hibernate.initialize?
Обычно упоминаемая документация говорит только о

Hibernate.initialize(entity.lazyCollection)

Есть ли смысл в

Hibernate.initialize(entity)
4b9b3361

Ответ 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 делает только один запрос для извлечения объекта. Таким образом, еще одно различие - это числовые вызовы на сервер

Кроме того:  1. Если объект имеет значение null Hibernate.initialize() исключает исключение  2. Хороший источник для инициализации ленивых ассоциаций http://www.thoughts-on-java.org/5-ways-to-initialize-lazy-relations-and-when-to-use-them/