Junior — Middle
Ako možno použiť Entity Graph v JPA na optimalizáciu dopytov?
sobes.tech AI
Odpoveď od AI
Entity Graph v JPA umožňuje špecifikovať, ktoré naviazané entity majú byť načítané spolu s hlavnou entitou, aby sa predišlo problému N+1 dotazov a optimalizoval výkon.
Môžete vytvoriť NamedEntityGraph alebo dynamický EntityGraph, kde sú explicitne uvedené atribúty pre eager načítanie (fetch). Napríklad:
EntityGraph<User> graph = entityManager.createEntityGraph(User.class);
graph.addAttributeNodes("address", "orders");
Map<String, Object> hints = new HashMap<>();
hints.put("javax.persistence.fetchgraph", graph);
User user = entityManager.find(User.class, userId, hints);
Týmto spôsobom sa pri načítaní používateľa okamžite načítajú súvisiace adresy a objednávky, čím sa zníži počet dotazov na databázu.