Главная страница

FetchMode в Hibernate говорит как мы хотим, чтоб связанные сущности или коллекции были загружены


Скачать 12.87 Kb.
НазваниеFetchMode в Hibernate говорит как мы хотим, чтоб связанные сущности или коллекции были загружены
АнкорHibernate.docx
Дата02.04.2021
Размер12.87 Kb.
Формат файлаdocx
Имя файлаHibernate.docx
ТипЛекции
#190782

HIBERNATE

FetchMode в Hibernate говорит как мы хотим, чтоб связанные сущности или коллекции были загружены:

— SELECT — используя по дополнительному SQL запросу на коллекцию,

— JOIN — в одном запросе с корневой сущностью, используя SQL оператор JOIN,

— SUBSELECT— в дополнительном запросе, используя SUBSELECT.

Eager Loading — стратегия загрузки, при которой подгрузка связанных сущностей происходит сразу. Для применения необходимо в аннотацию отношения (@OneToOne, @ManyToOne, @OneToMany, @ManyToMany) передать fetch = FetchType.EAGER. Используется по умолчанию для отношений @OneToOne и @ManyToOne.

Lazy Loading — стратегия загрузки, при которой подгрузка связанных сущностей откладывается как можно дольше. Чтобы задать такое поведение, нужно в аннотацию отношения (@OneToOne, @ManyToOne, @OneToMany, @ManyToMany) передать fetch = FetchType.LAZY. Используется по умолчанию для отношений @OneToMany, @ManyToMany. До момента загрузки используется proxy-объект, вместо реального. Если обратиться к такому LAZY-полю после закрытия сессии Hibernate, то получим LazyInitializationException.

Объект-сущность может находиться в одном из 3-х состояний (статусов):

transient object. Объекты в данном статусе — это заполненные экземпляры классов-сущностей. Могут быть сохранены в БД. Не присоединены к сессии. Поле Id не должно быть заполнено, иначе объект имеет статус detached ;

persistent object. Объект в данном статусе — так называемая хранимая сущность, которая присоединена к конкретной сессии. Только в этом статусе объект взаимодействует с базой данных. При работе с объектом данного типа в рамках транзакции все изменения объекта записываются в базу;

detached object. Объект в данном статусе — это объект, отсоединённый от сессии, может существовать или не существовать в БД.


написать администратору сайта