too*_*hcs 6 spring hibernate lazy-loading
你如何明确加载一个懒惰的对象/集合?到目前为止,我发现唯一的方法是在它仍然附加到会话时明确要求对象的getter/setter:ie
List < Account > accounts = Bank.getAccounts();
accounts.get(i).getAccountNumber();
Run Code Online (Sandbox Code Playgroud)
还有另一种不那么狡猾的方法吗?
我使用Spring btw,所以根据所调用的服务,我想加载不同的集合/ obkjects
hvg*_*des 13
我不认为你这样做是狡猾的; hibernate的目标是透明的.
但是,还有其他选择:
1)如果要始终加载集合,可以在集合中使集合不是惰性的.小心加载太多数据......
2)如果你想有时加载集合,那么保持lazy = true并添加另一个DAO方法
loadBankWithAccounts()
Run Code Online (Sandbox Code Playgroud)
或者做你正在做的事情,评论你为什么要初始化集合,或者使用带有fetch的HQL查询.查看文档.
3)查看hibernate文档的第19.1.4节,它描述了如何使用类似的东西
Hibernate.initialize(bank.getAccounts())
Run Code Online (Sandbox Code Playgroud)
这使您可以更明确地使用集合初始化...
| 归档时间: |
|
| 查看次数: |
10120 次 |
| 最近记录: |