有时你有两个实体,并且它们之间存在关系。例如,你可能有一个名为的实体
University,另一个实体名为,
Student而一所大学可能有很多学生:
University实体可能具有一些基本属性,例如id,名称,地址等,还有一个名为students的集合属性,该属性返回给定大学的学生列表:
一所大学有很多学生
public class University { private String id; private String name; private String address; private List<Student> students; // setters and getters}
现在,当你从数据库加载大学时,JPA会为你加载其ID,名称和地址字段。但是,对于如何加载学生,你有两个选择:
- 要将其与其余字段一起加载(即急切地),或者
- 在调用大学
getStudents()
方法时按需(即懒惰地)加载它。
当一所大学有很多学生时,将所有学生与其一起加载是没有效率的,尤其是在不需要他们的情况下,在这种情况下,你可以声明希望在实际需要他们的时候加载学生。这称为延迟加载。
这是一个示例,其中
students已明确标记为急切加载:
@Entitypublic class University { @Id private String id; private String name; private String address; @oneToMany(fetch = FetchType.EAGER) private List<Student> students; // etc. }
这是一个示例,其中
students显式标记为延迟加载:
@Entitypublic class University { @Id private String id; private String name; private String address; @oneToMany(fetch = FetchType.LAZY) private List<Student> students; // etc.}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)