FC ConcursosFC Concursos

Questão FC890589

Uma analista de dados está implementando uma solução de persistência de dados para um novo sistema de gerenciamento de documentos utilizando JPA 2.0. Para otimizar o desempenho e e

Plataforma Java EE

FGV · 2026

Uma analista de dados está implementando uma solução de persistência de dados para um novo sistema de gerenciamento de documentos utilizando JPA 2.0. Para otimizar o desempenho e evitar o problema N+1, ela precisa garantir que as entidades relacionadas sejam carregadas de forma eficiente.

 

Para carregar as entidades via JPA 2.0 corretamente e mitigar o problema N+1 de forma eficiente, a analista deve:

  1. utilizar a anotação @ManyToOne sem especificar a estratégia de carregamento, permitindo que o JPA decida a melhor abordagem;
  2. implementar consultas JPQL manuais para carregar as entidades relacionadas, garantindo o controle total sobre o processo de carregamento;
  3. utilizar a anotação @OneToMany com a estratégia FetchType.LAZY e utilizar JOIN FETCH nas consultas JPQL para carregar as entidades relacionadas de forma eficiente;
  4. configurar o FetchType como EAGER em todos os relacionamentos @ManyToOne, garantindo que as entidades relacionadas sejam sempre carregadas junto com a entidade principal;
  5. utilizar a anotação @LazyToOne(false) em relacionamentos @ManyToOne, a fim de carregar as entidades relacionadas apenas quando acessadas, evitando o carregamento antecipado.
Mostrar resposta e comentário

Gabarito

Certo

Comentário do professor

Ao mapear a relação com @OneToMany e manter FetchType.LAZY, você evita carregar coleções automaticamente em todas as consultas, reduzindo carregamento desnecessário. Contudo, o acesso preguiçoso pode provocar o problema N+1 quando cada entidade pai dispara uma consulta para suas filhas.

Para resolver isso de forma eficiente, use JOIN FETCH em consultas JPQL quando precisar buscar a coleção junto com a entidade pai em uma única operação. Exemplo:
SELECT d FROM Documento d JOIN FETCH d.versoes WHERE d.id = :id

Use SELECT DISTINCT para evitar resultados duplicados ao buscar coleções. Fique atento que JOIN FETCH em coleções pode complicar paginação; nesse caso avalie batch fetching ou queries específicas para contagem e paginação.

Conteúdo do catálogo FC Concursos · Atualizado em

Continue aprendendo