我看到很多地方专家开发人员建议LAZY 加载持久化实体以节省内存。
这个概念很清楚:加载大量你不会使用的信息是没有用的。
但是,根据我的日常经验,应用这种最佳实践并非易事。我的意思是,如果我定义了一个 dependencyDEPARTMENT
,比如说 a和 an之间的一对多关系EMPLOYEE
,我很可能在处理我的业务逻辑时需要员工列表。Department
这件事很常见,我发现自己在大多数情况下都使用 EAGER 加载。
从编程的角度来看,我能做的最好的就是用这样的标志来发送我的 Dao 方法
public Department getDepartment(String departmentName, boolean eagerly)
其中eagerly
属性设置为true
触发部门的完整加载(默认为LAZY加载。我调用getEmployees()
事务内部加载员工列表)。
你如何处理问题?您对 LAZY 加载感到满意吗?如果是这样,我错过了什么吗?
编辑:
根据@Ayman 的解释,我想用hibernate 讨论以下方法。
public class Node {
private Node parent;
private Set<Node> children;
public getParent(){
if(parent==null)
return Hibernate.initialize(parent);
return parent;
}
public getChildren(){
if(children==null)
return Hibernate.initialize(children);
return children;
}
}
这是一个可以接受的实现吗?有什么缺点?