powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate почему не работает LAZY?
9 сообщений из 9, страница 1 из 1
Hibernate почему не работает LAZY?
    #39475138
Maxifly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В таблице есть поле, в которое надо вставить время вставки или изменения записи,
но на стороне клиента эти данные абсолютно не нужны.


Я сделал так:
Описал как генерировать значение на стороне БД и для поля указал тип ftech-а LAZY


Код: java
1.
2.
3.
    @DBTimestampGenerator
    @Basic(fetch = FetchType.LAZY)
    private Timestamp resolution_time;// = new Timestamp(System.currentTimeMillis());



Но когда создаю объект и сохраняю его в БД все равно вижу, как после inserta делается select, поднимающий сгенерированное значение:


Hibernate: insert into CMN_DICTIONARIES (appl_appl_id, resolution_time, cdct_id) values (?, systimestamp, ?)
Hibernate: select nlsdict_.resolution_time as resolution_time3_1_ from CMN_DICTIONARIES nlsdict_ where nlsdict_.cdct_id=?


Я, честно говоря, ожидал, что раз я указал LAZY, то селект такой не будет выполняться пока я не захочу использовать значение этого поля. Что я делаю не так?
...
Рейтинг: 0 / 0
Hibernate почему не работает LAZY?
    #39475141
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxiflyЯ, честно говоря, ожидал, что раз я указал LAZY...LAZY используется при "JOIN"-запросах.MaxiflyЧто я делаю не так? https://stackoverflow.com/a/21487862
...
Рейтинг: 0 / 0
Hibernate почему не работает LAZY?
    #39475170
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Простое поле не может быть ленивым, потому что в Java нет механизма перехвата обращения к полю. Нужно создать свойство и убедиться что хибер сумел создать для него прокси. Либо нужно само значение завернуть в отдельный класс который бы умел догружать одно поле лениво. Не могу сказать какой из двух способов будет работать в hibernate.
...
Рейтинг: 0 / 0
Hibernate почему не работает LAZY?
    #39475393
Maxifly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я подкину
нашел такую аннотацию
@LazyGroup
https://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/Hibernate_User_Guide.html#BytecodeEnhancement

Только что с ней дальше делать - пока не понял
...
Рейтинг: 0 / 0
Hibernate почему не работает LAZY?
    #39475406
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxiflyя подкину
нашел такую аннотацию
https://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/Hibernate_User_Guide.html#BytecodeEnhancement
Только что с ней дальше делать - пока не понял
Круто. По-идее это аналог FetchGroup только для атрибутов. Тогда либо имя lazyGroup должно совпадать с fetchGroup, либо должен быть метод addLazyGroup по аналогии с addFetchGroup.

Обращайте внимание на детали. LazyGroup требует инструментации байт-кода.
...
Рейтинг: 0 / 0
Hibernate почему не работает LAZY?
    #39475585
Maxifly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Ну это еще точно не мой уровень - можете хоть немножко пояснить что есть "инструментарий байт-кода"?

А то я в доке тоже это видел типа "расширение байт кода", только не понял что это и готовых каких-то примеров попонятнее не нашел - все на всех форумах на доку ссылаются именно на это место и все.
...
Рейтинг: 0 / 0
Hibernate почему не работает LAZY?
    #39475649
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxiflyНу это еще точно не мой уровень - можете хоть немножко пояснить что есть "инструментарий байт-кода"?

А то я в доке тоже это видел типа "расширение байт кода", только не понял что это и готовых каких-то примеров попонятнее не нашел - все на всех форумах на доку ссылаются именно на это место и все.
Я же уже объяснил выше. Что такое "ленивая загрузка"? Это когда данные догружаются при обращении к ним. Для того чтобы перехватить такое обращение, байт-код сущности модифицируется. Коллекциям инструментация особо не нужна. Хибер подсовывает свои коллекции и "видит" обращения к ним. К полям обращения перехватить нельзя в принципе. Можно только к свойствам. А чтобы перехватить обращения к свойствам нужны либо прокси, либо инструментация байткода. Ну, типа добавления нового кода в уже откомпилированый код.
...
Рейтинг: 0 / 0
Hibernate почему не работает LAZY?
    #39475800
Maxifly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
Интересно почему бы не потребовать наличие Поттера и перехватить обращение уже к нему?
...
Рейтинг: 0 / 0
Hibernate почему не работает LAZY?
    #39475929
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxifly, ну, наверняка есть какие-то предупреждения в логе.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate почему не работает LAZY?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]