JPA实体图的目标是什么?
我一直在学习JPA
,我发现从JPA
2.1开始可以使用实体图。
但我还不了解实体图的优点。
我知道使用实体图的一个好处是我们只能在整个实体中指定我们想要获取的数据,但是如果我们想要获取整个实体,还有没有其他原因使用实体图呢?
或者仅在要检索部分数据时才应使用实体图?
如果我们使用实体图有其他用途或优点,我很想知道。
JPA
在推荐答案/Hibernate中,获取具有关联的实体始终是 关于性能的问题。
-
懒惰地一次又一次地加载与事务中的关联会导致n+1个选择问题,为了避免此类问题,JPQL
使用JOIN FETCH和Criteria API JOIN。但是通过以下方式获取数据
这两个问题还会导致交叉连接问题意味着所有对象的交叉连接
表记录由Hibernate返回给应用程序。
- 另外,更改实体级别的批注中定义的获取变量也不是基于用例的良好选择。
- 为解决上述两个问题,实体图应运而生。实体图中定义的所有节点始终是急切的 无论它们在实体级别上的定义如何,都会获取。这些 图表作为提示传递给查询。
- 通过将图形作为提示传递,也解决了交叉连接问题,并且指定的关联获取行为的注释级可以 也可以更改。
对于代码,您可以检查my Github repository。
相关文章