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:
- utilizar a anotação @ManyToOne sem especificar a estratégia de carregamento, permitindo que o JPA decida a melhor abordagem;
- implementar consultas JPQL manuais para carregar as entidades relacionadas, garantindo o controle total sobre o processo de carregamento;
- 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;
- configurar o FetchType como EAGER em todos os relacionamentos @ManyToOne, garantindo que as entidades relacionadas sejam sempre carregadas junto com a entidade principal;
- 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