java - 为什么我们需要使用实体图?

我一直在研究JPA,发现从JPA 2.1开始我们可以使用实体图。

但是我还不了解实体图的优点。

我知道使用实体图的优点之一是我们只能在整个实体中指定要获取的数据,但是如果我们想要整个实体,还有其他理由使用实体图吗?
还是仅在我们要检索部分数据时才应使用实体图?

当我们使用实体图时,它还有其他目的或优点,我想知道这一点。

最佳答案

在Jpa中,休眠一直使用关联来获取实体
性能问题。


一次又一次地在事务中延迟加载关联,这会导致n + 1个选择问题,并避免此类问题。JPQL
使用join fetch和Cr iteria api join。但是用
这两个也导致交叉连接问题,意味着所有交叉连接
表记录由休眠返回到合用。
同样,对于基于用例的情况,更改在实体级别的注释中定义的访存变量也不是一个好的选择。
因此,为了解决上述两个问题,引入了实体图。实体图中定义的所有节点总是渴望的
不论它们在实体级别上的定义如何都可以获取。这些
图作为提示传递给查询。
通过传递图作为提示,可以解决交叉连接问题以及注释级别指定的关联获取行为
也要改变。



对于代码,您可以检查我的github存储库:

https://github.com/vaneetkataria/Jpa-Hibernate/blob/master/jdbcToJpaMigration/src/test/java/com/katariasoft/technologies/jpaHibernate/entity/fetch/entitygraph/dynamic/MultiInstructorsDynamicEntityGrpahTests.java

本文翻译自 https://stackoverflow.com/questions/31703532/

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。

标签 java jpa entity entitygraph


相关文章:

java - 从servlet转发到JSP导致HTTP 404

java - 使用JPA查询语言的表大小

c# - LINQ聚集在Where字符串中

database - JPA-左联接2个表而没有关联

javascript - 服务器已发送事件在Chrome中无效

java - JGit Java Git库取消暂存文件

java - 是否可以将application.yml变量放入属性文件?

java - 想要使用实体修改休眠条件

java - 是否为分离的对象休眠默认的乐观锁定?

java - 当JPA实体不应该准确反映数据库上的物理模型时