Questão de Banco de Dados — SQL — FCC 2022
- Código
- fc064188
- Banca
- FCC
- Órgão
- TRT - 14ª Região (RO e AC)
- Ano
- 2022
- Cargo
- Técnico Judiciário - Tecnologia da Informação
- Apersist.
- Bmerge.
- CexecuteUpdate.
- Dsave.
- EpushUpdate.
GabaritoB — merge.
Gabarito: letra B. O método merge() da interface EntityManager é o responsável por executar comandos SQL UPDATE na tabela, sincronizando o estado de uma entidade já persistida com o banco de dados. Os demais métodos (persist, executeUpdate, save, pushUpdate) não se encaixam no que a questão pede.
A banca testa o conhecimento dos métodos padrão da JPA 2.0 para operações CRUD. Cada alternativa representa um método que, à primeira vista, pode parecer adequado, mas apenas um cumpre exatamente o papel no contexto da EntityManager.
persist() é utilizado para inserir um novo registro no banco, gerando um INSERT. Não realiza atualizações.
merge() é o método da EntityManager que atualiza uma entidade existente. Internamente, o JPA gera um comando UPDATE na tabela correspondente, considerando a chave primária. Se a entidade não existir, pode gerar um INSERT, mas a função principal na alteração é esta.
executeUpdate() é um método da interface Query (obtida via EntityManager.createQuery() ou createNativeQuery()), não da própria EntityManager. Ele serve para executar comandos UPDATE ou DELETE em JPQL ou SQL nativo, mas a questão pede especificamente um método da interface EntityManager.
save() é um método do repositório do Spring Data JPA (do CrudRepository), não faz parte da JPA 2.0 padrão. Portanto, não está na interface EntityManager.
pushUpdate() não existe na API JPA 2.0. Trata-se de um nome inventado.
Para questões de JPA, memorize os métodos básicos da EntityManager: persist (INSERT), merge (UPDATE/INSERT), remove (DELETE), find (SELECT por PK), createQuery, etc. Sempre verifique se o método pertence realmente à interface EntityManager (sem dependências externas como Spring).
Gabarito: letra B.
Link permanente: /questoes/fc064188