栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java Persistence API中的FetchType LAZY和EAGER之间的区别?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java Persistence API中的FetchType LAZY和EAGER之间的区别?

有时你有两个实体,并且它们之间存在关系。例如,你可能有一个名为的实体

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,名称和地址字段。但是,对于如何加载学生,你有两个选择:

  1. 要将其与其余字段一起加载(即急切地),或者
  2. 在调用大学
    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.}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/404805.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号