1. 程式人生 > 其它 >jpa 級聯查詢引發的N+1問題

jpa 級聯查詢引發的N+1問題

        在使用jpa過程中,如果我們需要通過一個實體去獲取關聯實體時會發現在獲取級聯物件時會連線資料庫進行再次查詢。如果查詢的資料過多的話,將會對程式效能造成功嚴重影響。使用jpa提供的
@NamedEntityGraph註解來實現在查詢主物件時順帶獲取所有關聯的級聯物件。
下面來實現具體的功能,我們暫時不用關心實體物件和級聯物件具體是什麼含義,只需關心這兩個實體具有關聯關係。
首先在主表的實體物件上新增
@NamedEntityGraph(name = "ExpansionResMng.ALL", attributeNodes = {@NamedAttributeNode("expansionResMngCells")})註解,其中裡面的 ExpansionResMng.ALL可以自定義。
NamedAttributeNode表示是關聯的物件。

 

  後面需要在對應jpa查詢介面需要級聯查詢的方法上新增對應的註解。

 

 

總結:在使用jpa時我們總是少不了級聯操作。在查詢主表時把從表資料也查詢出來,這樣我們在獲取從表資料時不用在查詢資料庫,提高了我們的查詢效率。