FC ConcursosFC Concursos

Questão FC373619

Em uma aplicação Java web que utiliza JPA, em condições ideais, considere o método genérico abaixo em uma classe chamada EmpresaDao.java. public <T> List listar (String queryNomead

Plataforma Java EE

FCC · 2023

Em uma aplicação Java web que utiliza JPA, em condições ideais, considere o método genérico abaixo em uma classe chamada EmpresaDao.java.

 

public <T> List listar (String queryNomeada, Class<T> classe) {

 conectar();

 try {

  return manager.createNamedQuery (queryNomeada, classe).getResultList();

 } catch (NoResultException erro) {

  return null;

 }

}

 

Sabendo que existe uma classe de entidade do banco de dados chamada Departamento, e uma query nomeada chamada Departamento.findAll que seleciona todos os departamentos cadastrados, a partir de uma servlet Java da aplicação, para chamar o método listar e obter os departamentos cadastrados utiliza-se o comando

  1. List<Departamentos departamentos - new EmpresaDao().listar ("Departamento.findAll", Departamento);
  2. List<Departamento> departamentos = new EmpresaDao().listar ("Departamento.findAll", new Class (Departamento.java));
  3. List<Departamento> departamentos = new EmpresaDao().listar ("Departamento.findAll", Departamento.class);
  4. List<T> departamentos = new EmpresaDao().listar ("Departamento.findAll", Departamento.class);
  5. List<Departamento» departamentos new EmpresaDao () .listar ("Departamento.findAll", Departamento.java);
Mostrar resposta e comentário

Gabarito

Certo

Comentário do professor

A chamada List<Departamento> departamentos = new EmpresaDao().listar("Departamento.findAll", Departamento.class); passa corretamente os dois parâmetros exigidos pelo método: a query nomeada como string ("Departamento.findAll") e a classe que representa o tipo da entidade (Departamento.class).

O segundo argumento, Departamento.class, é essencial porque o parâmetro Class<T> informa ao JPA o tipo esperado em tempo de execução, permitindo que createNamedQuery(queryNomeada, classe).getResultList() retorne uma coleção já tipada.

Assim, a atribuição para List<Departamento> é segura e não requer casts. A expressão new EmpresaDao().listar(...) instancia o DAO e obtém diretamente a lista de entidades retornada pela named query.

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

Continue aprendendo