Questão nº 29

Questão de Tecnologia da Informação · FCC TRT5 2022 (nº 29)

FCC2022Analista Judiciário - Área Apoio Especializado - Especialidade Tecnologia da InformaçãoTecnologia da Informação
Gabarito: Dver comentário ↓

Considere o trecho de código a seguir, presente em um método de uma classe de aplicação criada utilizando-se JPA.

```
TypedQuery<Departamento> query = manager.createNamedQuery("Departamento.findAll",
Departamento.class);
List<Departamento> departamentos = I ;
```

Departamento.findAll é uma query nomeada na classe Departamento, que retorna todos os departamentos cadastrados na tabela departamento do banco de dados. O objeto manager é um objeto do tipo EntityManager criado sobre uma conexão válida com um banco de dados. Considere que todos os recursos necessários foram importados e que a conexão com o banco de dados foi realizada com sucesso. Nestas condições, para se obter a lista de departamentos retornada da tabela do banco de dados a lacuna I deve ser corretamente preenchida por

Resposta comentada

Gabarito Alternativa D

Em JPA, após criar uma TypedQuery (uma consulta tipada que sabe qual tipo de objeto vai retornar), você precisa de um método para executá-la e obter os resultados. Se a consulta pode retornar múltiplos objetos, existe um método específico para isso.

  • (A) Incorreta: query.getResult().toList() não é válido. O método getResult() retorna um único objeto (ou lança exceção se houver múltiplos ou nenhum), e não uma coleção ou Stream sobre a qual toList() possa ser chamado diretamente.
  • (B) Incorreta: O manager (EntityManager) não possui um método excuteQuery() (além do erro de digitação, não há um método com essa assinatura ou propósito para executar uma TypedQuery já criada).
  • (C) Incorreta: query.getResult() é usado quando se espera apenas um único resultado da consulta. Se a consulta retornar mais de um departamento, ele lançará uma NonUniqueResultException. Como a variável departamentos é do tipo List<Departamento>, a expectativa é de múltiplos resultados, tornando este método inadequado. Armadilha: Esta é a alternativa mais tentadora porque getResult() é um método válido, mas para um cenário diferente (resultado único).
  • (D) Correta: query.getResultList() é o método correto para executar uma TypedQuery quando se espera uma lista de resultados. Ele retorna um java.util.List contendo todos os objetos que correspondem à consulta, que é exatamente o que a variável departamentos espera.
  • (E) Incorreta: O manager (EntityManager) não possui um método executeQuery() que receba uma TypedQuery como argumento para execução. A execução é feita diretamente no objeto query.

Fonte: FCC TRT5 2022 Analista Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação (Caderno Tipo 001). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho