Considere o método a seguir, retirado de uma classe Java que...
Considere o método a seguir, retirado de uma classe Java que utiliza JPA, implementada em condições ideais.
public List consultar(String n) {
x = Persistence.createEntityManagerFactory("conectarPU");
y = x.createEntityManager();
z = y.getTransaction();
z.begin ();
Query q = y.createQuery("SELECT f FROM Funcionario f WHERE f.nomefuncionario LIKE :nome");
q.set Parameter("nome", "%" + n + "%");
List lista = q.getResultList();
x.close();
return lista;
}
As variáveis x, y e z são, respectivamente, dos tipos
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Gabarito: Alternativa B
Vamos entender por que a alternativa B é a correta. A questão aborda o uso do JPA (Java Persistence API), que é uma especificação do Java EE (agora Jakarta EE) para a persistência de dados em aplicações Java. Ela permite mapear objetos Java a tabelas de um banco de dados relacional de forma a gerenciar as entidades persistidas durante o ciclo de vida da aplicação.
Na implementação do método apresentado, temos as seguintes ações sendo realizadas:
- Criação de uma EntityManagerFactory, que é responsável por criar instâncias de EntityManager.
- Criação de um EntityManager, que gerencia as operações de persistência sobre as entidades.
- Início de uma transação, utilizando um objeto que representa a EntityTransaction.
As variáveis x, y e z são representantes das classes ou interfaces mencionadas acima, respectivamente:
- x: EntityManagerFactory
- y: EntityManager
- z: EntityTransaction
Estas são todas interfaces definidas no pacote javax.persistence
, que é o pacote base da JPA. Elas são utilizadas para gerenciar a persistência e a transação de dados nas aplicações Java.
Nas outras alternativas, as terminologias usadas estão incorretas ou não correspondem aos componentes do JPA:
- A alternativa A menciona interfaces do pacote
java.sql.jpa
, que na verdade não existe. Além disso, Connection e Statement são classes relacionadas a JDBC, não JPA. - A alternativa C introduz o termo PersistenceUnit, que é um conceito do JPA, mas não é uma interface, e também menciona o pacote inexistente
java.sql.jpa
. - A alternativa D menciona nomes genéricos e incorretos de interfaces e um pacote
javax.sql.persistence
, que também não existe. - A alternativa E menciona termos genéricos sem especificar as interfaces corretas e faz referência a um pacote
java.persistence.jpa
, que não é válido.
Portanto, a alternativa B é a única que identifica corretamente as interfaces usadas para a persistência de dados com JPA e o pacote ao qual pertencem.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo