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