你如何明确地加载一个懒惰的对象/集合? 到目前为止,我发现唯一的方法是明确地要求对象的getter / setter,同时仍然附加到会话中:ie
List < Account > accounts = Bank.getAccounts();
accounts.get(i).getAccountNumber();
还有另一种不那么狡猾的方法吗?
我使用Spring btw,所以根据调用的服务,我想加载不同的集合/ obkjects
答案 0 :(得分:13)
我不认为你这样做是狡猾的; hibernate的目标是透明的。
然而,还有其他选择:
1)如果要始终加载集合,可以在集合中使集合不是惰性的。小心加载太多数据......
2)如果你想有时加载集合,那么保留lazy = true并添加另一个DAO方法
loadBankWithAccounts()
并且要么做你正在做的事情,要么评论你为什么要初始化集合,要么使用带有fetch的HQL查询。查看文档。
3)查看hibernate文档的第19.1.4节,其中介绍了如何使用
之类的内容Hibernate.initialize(bank.getAccounts())
允许您更清楚地了解集合初始化...