Hibernate: consulta e exibição de dados persistentes
Gabarito: letra E. O método descrito utiliza o Hibernate para consultar e exibir o nome de todas as instâncias persistentes da classe Employee, sem realizar operações de atualização ou exclusão — exatamente o que a alternativa E afirma. A questão testa o entendimento do propósito do código, que é apenas de leitura (consulta), não de escrita ou modificação no banco de dados.
O Hibernate é um framework de mapeamento objeto-relacional (ORM) para Java, que facilita a persistência de objetos em bancos de dados relacionais. Ele transforma classes Java em tabelas e permite operações de CRUD (Create, Read, Update, Delete) de forma transparente, gerando as consultas SQL necessárias. No contexto da questão, o método provavelmente utiliza uma consulta HQL (Hibernate Query Language) ou Criteria para recuperar todos os registros da entidade Employee e, em seguida, itera sobre eles para exibir os nomes.
A pegadinha central está em distinguir operações de leitura (consulta) de operações de escrita (inserção, atualização, exclusão). O código descrito não contém chamadas a métodos como save(), update() ou delete() — ele apenas busca e exibe dados. Portanto, as alternativas que mencionam criar, localizar, excluir ou atualizar instâncias estão incorretas, pois descrevem ações que não são realizadas pelo método.
Para entender melhor, considere um exemplo: suponha que a classe Employee tenha atributos como id e name. O método poderia usar uma consulta HQL como from Employee para obter uma lista de todos os funcionários e, em seguida, um loop for para imprimir employee.getName(). Isso é uma operação de leitura pura, sem efeitos colaterais no banco de dados.
A distinção entre leitura e escrita é fundamental em aplicações de persistência. Operações de leitura (SELECT) não alteram o estado do banco, enquanto operações de escrita (INSERT, UPDATE, DELETE) modificam os dados. O Hibernate oferece métodos específicos para cada operação: save() para inserir, update() para atualizar, delete() para excluir, e consultas para ler. A banca explora exatamente essa confusão, apresentando alternativas que misturam ações de escrita com a leitura.
Guarde o critério decisivo: o método apenas exibe dados, sem atualizar ou excluir — é essa a fronteira que separa a alternativa correta das demais.
Alternativa A — ❌ Incorreta
Afirma que o método lê uma lista de nomes de um arquivo texto e cria instâncias de Employee para salvá-las no banco. Isso descreve uma operação de inserção (CREATE), mas o método não lê de arquivo nem chama save(). O código trabalha com dados já persistentes, não com entrada de arquivo.
Alternativa B — ❌ Incorreta
Diz que o método lê nomes de um arquivo e localiza instâncias previamente armazenadas. Embora mencione localizar (leitura), a origem dos dados é um arquivo texto, o que não condiz com o código, que opera sobre o banco de dados diretamente. Não há leitura de arquivo no método.
Alternativa C — ❌ Incorreta
Afirma que o método exibe os nomes e exclui as instâncias. A exclusão seria uma operação de escrita (DELETE), que não está presente no código. O método apenas exibe, sem chamar delete().
Alternativa D — ❌ Incorreta
Diz que o método exibe os nomes e atualiza as instâncias. A atualização seria uma operação de escrita (UPDATE), que não ocorre. O código não chama update() nem modifica os objetos.
Alternativa E — ✅ Correta ⟵ GABARITO
Descreve corretamente o propósito: exibir o nome de todas as instâncias persistentes de Employee, sem realizar operações de atualização ou exclusão. Isso corresponde a uma consulta de leitura, que é exatamente o que o método faz.
Gabarito: letra E