Spring & Hibernate: загрузка ленивой коллекции - PullRequest
6 голосов
/ 27 ноября 2010

Как вы явно загружаете ленивый Объект / коллекцию?До сих пор я нашел, что единственный способ сделать это - явно запросить получатель / установщик объекта, пока он все еще присоединен к сеансу: т.е.сделать это?

Я работаю с Spring, кстати, поэтому в зависимости от того, какой сервис вызывается, я хочу загрузить разные коллекции / объекты

1 Ответ

13 голосов
/ 27 ноября 2010

Я не думаю, что то, как вы делаете это, хитро;цель спящего режима - быть прозрачным.

Однако есть альтернативы:

1) Если вы хотите всегда загружать коллекцию, вы можете просто сделать коллекцию не ленивой в конфигурации.Остерегайтесь загрузки слишком большого количества данных ...

2) Если вы хотите иногда загружать коллекцию, оставьте lazy = true и добавьте другой метод DAO

loadBankWithAccounts()

и делайте то, что выделать с комментарием о том, почему вы инициализируете коллекцию, или использовать HQL-запрос с fetch.Ознакомьтесь с документацией.

3) Ознакомьтесь с разделом 19.1.4 документации гибернации, в котором описано, как использовать что-то вроде

Hibernate.initialize(bank.getAccounts())

, что позволяет вам быть более явным с вашей коллекциейинициализация ...

...