🎯 Saiba o que estudar

Avançado com Treinador a partir de R$ 0,76/dia

Um Tribunal de Justiça mantém uma consulta pública em Spring...

Próximas questões
Com base no mesmo assunto
Q4240106 Programação
Um Tribunal de Justiça mantém uma consulta pública em Spring Boot que lista milhares de processos filtrados por classe, comarca e situação. A tela exibe número, órgão julgador, classe, data de distribuição e última movimentação, mas a atualização recente elevou a latência por navegação em associações tardias. Considerando JPA/Hibernate e a necessidade de evitar materialização desnecessária do grafo de entidades, a solução tecnicamente correta é
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Gabarito: B

Fundamento decisivo: A decisão estava em perceber que a tela exibe apenas alguns campos e que o enunciado pede evitar a materialização desnecessária do grafo de entidades; nesse cenário, a alternativa correta é a que consulta somente os dados necessários.

Tema central: Projeção DTO em leitura
Análise das alternativas
A
Errada
Está errada porque @BatchSize pode reduzir a quantidade de consultas em alguns casos, mas a própria alternativa afirma retornar o grafo completo de cada processo. Isso contraria o requisito central da questão, que é evitar materialização desnecessária e trazer apenas o necessário para a tela.
B
Certa
A alternativa B está correta porque usa projeção DTO apenas com os campos da tela, em vez de carregar entidades completas com suas associações. Como a listagem mostra número, órgão julgador, classe, data de distribuição e última movimentação, a consulta deve buscar exatamente esses dados, inclusive obtendo a última movimentação na própria consulta, para evitar navegação lazy e o carregamento desnecessário do grafo de entidades.
C
Errada
Está errada porque desloca o problema para uma substituição arquitetural ampla e desnecessária, inclusive mencionando updates em um cenário descrito como de leitura/listagem. A questão pedia a solução técnica adequada dentro do contexto de JPA/Hibernate para consulta de leitura, não a troca generalizada por JDBC.
D
Errada
Está errada porque aplicar JOIN FETCH em movimentações, partes, documentos e assuntos expande fortemente o grafo carregado. Isso vai na direção oposta do enunciado, que exige evitar materialização desnecessária, além de continuar tratando o problema como carregamento de entidades e associações, e não como consulta enxuta de exibição.
E
Errada
Está errada porque cache de segundo nível pode ajudar na reutilização de entidades, mas não corrige o problema estrutural de uma listagem que continua buscando mais objetos do que a tela precisa. Cache não substitui uma consulta modelada para trazer só os campos necessários.
Pegadinha da questão
A confusão explorada foi tratar qualquer problema de lazy loading como caso para JOIN FETCH, batch ou cache, quando o enunciado pedia algo mais específico: uma leitura enxuta que evitasse carregar o grafo de entidades.
Dica para questões semelhantes
  • Se a consulta é de listagem e a tela mostra poucos campos, prefira projeção DTO em vez de entidades completas.
  • Reduzir número de consultas não basta se a solução ainda materializa associações que a tela não usa.
  • Quando apenas um dado derivado de uma coleção é exibido, obtenha-o na própria consulta em vez de carregar a coleção inteira.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo