为什么我们需要使用实体图?
我一直在研究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
以上是 为什么我们需要使用实体图? 的全部内容, 来源链接: utcz.com/qa/397862.html