Я вижу, что с помощью Spring Boot вам не нужно открывать и закрывать сеанс гибернации.
Но для целей понимания, как он работает внутри, на каком уровне он открывает сеанс гибернации и когда он закрывается.
Я создал один POC.
У меня есть одно загрузочное приложение Spring, у него есть два Entity One - Customer
, а другое - Address
, и между Customer
и Address
.
существует отношение один ко многим.
И у меня есть один два Apis, один добавляет запись, а другой загружает все записи.
Эти AP находятся там в CustomerEndpoint, и они отмечены
@RestController
@RequestMapping(value="/customer").
А также создал CustomerRepository
, который расширяет CrudRepository
для сохранения и извлечения записей Customer
.
Так, согласно моему пониманию, при извлечении Клиента с использованием CustomerRepository
внутри CustomerEndpoint
класс должен выдавать ошибку LazyInitialization, когда мы скажем customer.getAddress
(так как его тип выборки - LAZY).
Но он не выдает никакой ошибки, он работает правильно.
Я думал, что сеанса гибернации не будет в классе CustomerEndpoint
.
Может кто-нибудь помочь мне, как этот сеанс Hibernate поддерживается загрузкой Spring?
Так как все думают, что это дубликат другого вопроса, но мой вопрос не является вершиной их объяснения, так как в соответствии с ними сессия действительна до репозитория, поэтому в соответствии с этим я должен получить исключение LazyInitialization при произнесении customer.getAddress. внутри CustomerEndpoint, поскольку он не является репозиторием, но я не получаю никаких исключений