2016-05-26 3 views
2

Итак, давайте представим, что у меня есть два объекта: Курс и Упражнение. Курс содержит список упражнений.Hibernate Lazyloading в стиле ООП

Ленивая загрузка включена, и через Repository я получаю курс, что я заинтересован в:

couserRepo.query(new ByNameSpec("courseName")). 

Теперь я хочу Acces упражнения, конечно, но когда я называю course.getExerccises() я получаю сообщ, что сессия уже закрыт. Итак, я должен сделать еще один запрос на репо, это абсолютно не удобно.

Что с этим делать?

ответ

3

Помните, что сеанс открытия за операцию является антипаттерн. См. http://docs.jboss.org/hibernate/orm/5.1/userguide/html_single/Hibernate_User_Guide.html#session-per-operation для получения дополнительной информации.

Объем Hibernate org.hibernate.Session является гибким, но вы никогда не должны проектировать приложение для использования нового Hibernate org.hibernate.Session для каждой операции с базой данных.

Я думаю, вам следует рассмотреть шаблон сеанса за запрос.

+0

Спасибо Якуб, хорошая ссылка! –

Смежные вопросы