我是Java Persistence API和Hibernate的新手。
Java Persistence API
Hibernate
FetchType.LAZY和FetchType.EAGERJava Persistence API 之间有什么区别?
FetchType.LAZY
FetchType.EAGERJava Persistence API
有时你有两个实体,并且它们之间存在关系。例如,你可能有一个名为的实体University,另一个实体名为,Student而一所大学可能有很多学生:
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已明确标记为急切加载:
students
@Entity public class University { @Id private String id; private String name; private String address; @OneToMany(fetch = FetchType.EAGER) private List<Student> students; // etc. }
这是一个示例,其中students显式标记为延迟加载:
@Entity public class University { @Id private String id; private String name; private String address; @OneToMany(fetch = FetchType.LAZY) private List<Student> students; // etc. }