jpa 级联查询引发的N+1问题

        在使用jpa过程中,如果我们需要通过一个实体去获取关联实体时会发现在获取级联对象时会连接数据库进行再次查询。如果查询的数据过多的话,将会对程序性能造成功严重影响。使用jpa提供的
@NamedEntityGraph注解来实现在查询主对象时顺带获取所有关联的级联对象。
下面来实现具体的功能,我们暂时不用关心实体对象和级联对象具体是什么含义,只需关心这两个实体具有关联关系。
首先在主表的实体对象上添加
@NamedEntityGraph(name = "ExpansionResMng.ALL", attributeNodes = {@NamedAttributeNode("expansionResMngCells")})注解,其中里面的 ExpansionResMng.ALL可以自定义。
NamedAttributeNode表示是关联的对象。

 

  后面需要在对应jpa查询接口需要级联查询的方法上添加对应的注解。

 

 

总结:在使用jpa时我们总是少不了级联操作。在查询主表时把从表数据也查询出来,这样我们在获取从表数据时不用在查询数据库,提高了我们的查询效率。

 

posted @ 2022-04-20 13:50  逆袭的小鱼  阅读(619)  评论(0编辑  收藏  举报