Sobes.tech
Junior — Middle

Como é que se pode aplicar o Entity Graph no JPA para otimizar consultas?

sobes.tech IA

Resposta da IA

Entity Graph em JPA permite especificar quais as entidades relacionadas devem ser carregadas juntamente com a entidade principal para evitar o problema de N+1 consultas e otimizar o desempenho.

Pode criar um NamedEntityGraph ou um EntityGraph dinâmico, onde os atributos para carregamento ansioso (fetch) são explicitamente indicados. Por exemplo:

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);

Assim, ao carregar o usuário, o endereço e os pedidos relacionados serão carregados imediatamente, o que reduzirá o número de consultas ao banco de dados.