Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我们需要使用实体图?_Java_Jpa_Entity_Entitygraph - Fatal编程技术网

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

Java 为什么我们需要使用实体图?,java,jpa,entity,entitygraph,Java,Jpa,Entity,Entitygraph,我一直在学习JPA,我发现我们可以从JPA2.1开始使用实体图 但我还不了解实体图的优点 我知道使用实体图的优点之一是我们只能在整个实体中指定我们想要获得的数据,但是如果我们想要整个实体,是否还有其他理由使用实体图? 或者我们应该只在检索部分数据时使用实体图 如果我们使用实体图还有其他目的或优点,我想知道 在Jpa hibernate中,始终使用关联获取实体 关于表现的问题。 在事务中一次又一次地延迟加载与的关联会导致n+1选择问题,为了避免此类问题,JPQL 使用连接获取和Cr iteria

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

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

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

如果我们使用实体图还有其他目的或优点,我想知道

  • 在Jpa hibernate中,始终使用关联获取实体 关于表现的问题。
    • 在事务中一次又一次地延迟加载与的关联会导致n+1选择问题,为了避免此类问题,JPQL 使用连接获取和Cr iteria api连接。但是使用 这两个问题也会导致交叉连接的问题,意味着所有的交叉连接 hibernate将表记录返回给应用程序
    • 另外,在实体级别修改注释中定义的fetch变量对于用例到用例的基础来说也不是一个好的选择
    • 因此,为了解决上述两个问题,引入了实体图。在实体图中定义的所有节点都始终是渴望的 无论实体级别上的定义如何,都已获取。这些 图形作为提示传递给查询
    • 通过将图形作为提示传递,可以解决交叉连接问题,也可以解决关联的注释级别指定的获取行为 也可以改变
  • 有关代码,您可以查看我的github存储库:


    这有帮助吗?谢谢你的链接,它帮助了很多!