当前位置: 首页 > 知识库问答 >
问题:

JPA的实体图的取和装有什么区别?

乐欣可
2023-03-14

我是JPA新手,正在尝试使用实体图。我意识到当我检索数据时,我需要指定我想要使用的EntityGraphType。

我阅读了JPA2.1规范,但我仍然不确定如何正确使用这2个选项...

问题是。。。

    < li >如果我没有任何具体要求,我应该使用哪个选项? < li >当我需要使用提取和加载时,具体是什么情况?

共有1个答案

江凯风
2023-03-14

我先回答你问题的第二部分。

我需要使用取装的时候具体是什么情况?

在 JPA 中加载实体有两种主要方法:预先加载和延迟加载。在预先加载中,在加载实体的父级时立即加载实体。在延迟加载中,仅当调用实体的实际 getter 时,才会加载该实体。高性能应用程序往往偏向于延迟加载,因为让最终用户在应用程序启动时等待整个表甚至一组表加载并不是很好。现在进入你的第二个问题。

通过导入<code>javax.persistence,可以指定<code>FETCH。在这种情况下,实体图中指定的所有属性都将被视为<code>FetchType。急切,并且所有未指定的属性将被视为<code>FetchType.LAZY。另一方面,如果您通过导入<code>javax.persistence来指定<code>加载<code>作为策略。loadgraph则实体图中指定的所有属性也是FetchType。急切但未指定的属性使用其指定的类型,如果实体未指定任何属性,则使用默认类型。

如果我没有任何具体要求,我应该使用哪个选项?

尽管如此,您不太可能没有具体要求。至少,您需要web应用程序快速运行。因此,您可能应该默认为延迟加载。使用<code>FETCH

 类似资料:
  • 问题内容: 我是JPA的新手,正在尝试使用实体图。而且我意识到,当我检索数据时,我需要指定要使用的EntityGraphType。 我阅读了JPA2.1规范,但仍不确定如何正确使用这两个选项… 问题是… 如果我没有特定要求,应该使用哪个选项? 我需要使用“读取并加载”时的具体情况是什么? 问题答案: 我将首先回答您问题的第二部分。 我需要使用“读取并加载”时的具体情况是什么? 有装载在JPA中,实

  • 问题内容: 我对Spring Data-JPA和JPA之间的区别感到困惑。我了解JPA,它是使用流行的ORM技术将Java对象持久化到关系数据库的规范。 换句话说,JPA提供接口和其他ORM技术,实现那些称为JPA提供程序的接口,例如Hibernate。 现在,Spring Data JPA到底是什么? Spring Data JPA是否在JPA之上添加了更多功能(接口),并且仍然仅被指定还是JP

  • 我对Spring Data-JPA和JPA之间的区别有点困惑。我知道JPA是一种使用流行的ORM技术将Java对象持久化到关系数据库的规范。 Spring Data JPA是在JPA之上添加了一些更多的功能(接口),还是只指定它还是一个JPA提供程序? 我看到Spring Data JPA围绕存储库工作(DAO层:如果我没有错的话)。那么,我的意思是,使用“Spring Data JPA+Hibe

  • 问题内容: 当我使用@Entity注释类并尝试解析依赖项时,我可以在两个不同的包javax.persistence.Entity和org.hibernate.annotations.Entity中选择包。 javax包是JPA的实体注释,但是为什么会有hibernate的实体注释,它与JPA的注释有区别?仅仅是允许定义更多属性的扩展吗? 问题答案: 具有一些尚未标准化的额外属性。仅当直接使用hib

  • 问题内容: 之间有什么区别 和 此示例来自Java EE教程,但我仍然不了解详细信息。 问题答案: 从这里: 级联删除 用CascadeType.REMOVE(或CascadeType.ALL,包括REMOVE)标记引用字段表示删除操作应自动级联到该字段引用的实体对象(多个实体对象可以被collection字段引用): 移除孤儿 JPA 2支持附加的,更积极的删除级联模式,可以使用@OneToOn

  • 问题内容: 当我使用@Entity注释类并尝试解决依赖关系时,我可以在两个不同的包javax.persistence.Entity和org.hibernate.annotations.Entity中选择包。 javax包是JPA的实体注释,但是为什么会有休眠的实体注释,它与JPA的注释有区别?仅仅是允许定义更多属性的扩展吗? 问题答案: 具有一些尚未标准化的额外属性。仅当直接使用hibernate