Я совсем новичок в Spring, и я хотел бы немного больше понять о сессиях. Я сопоставил устаревшую базу данных с аннотированными сущностями Hibernate и создал пару сервисных объектов для извлечения, извлечения и т. Д. Мои сущности также содержат другие сущности (сопоставленные через внешние ключи) и наборы сущностей. Когда я просматриваю график прав в моих сервисах, у меня нет проблем. Мои сервисы были завернуты в TransactionProxyFactoryBean, поэтому все должно быть хорошо.
Итак, в моем View Controller я запрашиваю несколько сервисов из сервисов. Но когда я просматриваю граф сущностей в моем контроллере представлений (например, для отображения названия страны государства пользователя, причем сущности и страна являются лениво загруженными сущностями), сеанс Hibernate уже закрывается, и я получаю «LazyInitializationException: не удалось инициализировать прокси - нет сеанса "
Я бы не хотел, чтобы мои службы охотно извлекали данные, которые будут занимать много памяти, потому что мои графики глубоки и могут даже иметь циклические ссылки. Я также не хочу явно касаться частей, которые я буду отображать в сервисах, поскольку это будет означать, что мне придется копировать / вставлять и писать подобные сервисы снова и снова. Поэтому я хочу, чтобы сеанс Hibernate оставался открытым, когда я нахожусь в контроллере моего представления, и не закрывал сеанс, пока представление не будет обработано. Что я могу сделать, чтобы держать его открытым?
Мой bean-компонент вида выглядит следующим образом, есть ли способ, которым я могу внедрить в него мой компонент TransactionProxyFactoryBean-производный?
<bean name="/" class="example.SimpleViewController">
<property name="userService" ref="userService"/>
<property name="catalogService" ref="catalogService"/>
</bean>
Приветствия
Nik