Questão nº 34
Questão de Tecnologia da Informação · FCC TRT-12 2023 (nº 34)
Em uma aplicação Java que utiliza JPA, em condições ideais, considere `manager` um objeto válido criado por meio da instrução abaixo.
```java
EntityManager manager =
Persistence.createEntityManagerFactory("trtPU").createEntityManager();
```
A instrução `manager.createNamedQuery("Acesso.findByUserSenha", Acesso.class);` irá retornar um objeto do tipo
- A`List<Acesso>`
- B`Acesso`
- C`Query<Acesso>`
- D`TypedQuery<Acesso>` (alternativa correta)
- E`ArrayList<Acesso>`
Resposta comentada
Gabarito Alternativa D
Quando você pede ao JPA para criar uma consulta (query), ele te devolve um objeto que representa essa consulta, e não os resultados dela ainda. Se você informa o tipo de dado que a consulta vai buscar (como `Acesso.class`), o JPA te dá uma consulta tipada para garantir que os resultados serão daquele tipo, evitando erros.
(A) Incorreta: `List<Acesso>` seria o resultado da execução da consulta (após chamar `getResultList()`), e não o objeto que representa a consulta em si.
(B) Incorreta: `Acesso` seria um único resultado da consulta (após chamar `getSingleResult()`), e não o objeto que representa a consulta em si.
(C) Incorreta: `Query` é o tipo de consulta não tipada. Como a instrução `createNamedQuery` recebeu `Acesso.class` como segundo argumento, ela retorna uma consulta tipada, que oferece segurança de tipo em tempo de compilação. Armadilha da banca: Esta é a alternativa mais tentadora porque `Query` é a interface base para consultas, mas a presença do argumento de tipo (`Acesso.class`) indica que uma versão mais específica e segura será retornada.
(D) Correta: A instrução `manager.createNamedQuery("Acesso.findByUserSenha", Acesso.class)` cria uma consulta tipada. O segundo argumento, `Acesso.class`, indica o tipo de entidade que a consulta deve retornar, fazendo com que o método retorne um objeto `TypedQuery<Acesso>`, que oferece segurança de tipo.
(E) Incorreta: `ArrayList<Acesso>` é uma implementação concreta de `List`, que conteria os resultados da consulta, e não o objeto que representa a consulta antes de ser executada.
Fonte: FCC TRT-12 2023 Analista Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação (Caderno Tipo 003). Reproduzida para fins de estudo.