Sobes.tech
Junior — Middle

Jak lze v JPA použít Entity Graph k optimalizaci dotazů?

sobes.tech AI

Odpověď od AI

Entity Graph v JPA umožňuje určit, které navázané entity mají být načteny spolu s hlavní entitou, aby se předešlo problému N+1 dotazů a optimalizoval výkon.

Lze vytvořit NamedEntityGraph nebo dynamický EntityGraph, kde jsou explicitně uvedeny atributy pro eager načítání (fetch). Napří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 způsobem se při načítání uživatele ihned načtou související adresa a objednávky, což sníží počet dotazů do databáze.