你如何在你的应用程序中实际使用延迟加载?

时间:2013-06-23 09:53:54

标签: java hibernate lazy-loading

我看到很多地方专家开发人员建议 LAZY加载持久化实体以节省内存。

这个概念很清楚:无用加载大量信息你不会使用

然而,在我的日常经验中,应用这种最佳实践并不是微不足道的。我的意思是,如果我定义一个依赖,让我们说一个DEPARTMENTEMPLOYEE之间的一对多关系,很可能我会在我的业务逻辑中处理Department时需要员工列表。 这件事很常见,我发现自己在大多数情况下都会使用EAGER加载。

从编程的角度来看,我能做的最好的事情就是用这样的标志发送我的Dao方法

public Department getDepartment(String departmentName, boolean eagerly)

设置为eagerly的{​​{1}}属性触发部门的完全加载(默认情况下加载了LAZY。我调用事务中的true来加载员工列表)

你如何处理这个问题?你对LAZY装载感到舒服吗?如果是这样,我错过了什么吗?

修改

根据@Ayman的解释,我想用hibernate讨论以下方法。

getEmployees()

这是可以接受的实施吗?有什么缺点?

1 个答案:

答案 0 :(得分:1)

这取决于具体情况。我不建议添加热切的标志,因为它暴露了您的图书馆的内部工作。它应该对用户透明。

我通常这样做的方法是在课堂上。该部门将有一份员工名单。阅读部门时,只需读取dept表并将emp数组保留为null。然后,当您必须访问员工时,查看列表是否已加载。应该相当容易实现并保护库用户不要知道lib的内部。