← Questões de Programação

Programação · FGV · 2022

Questão comentada de Programação

O Hibernate, versão 6, é um framework que oferece mecanismos para armazenamento e recuperação de objetos Java por meio de mapeamento objeto-relacional. Em relação a interface Session, que oferece operações sobre instâncias de classes de entidade mapeadas, assinale a afirmativa correta.

Gabarito: B

No Hibernate, a interface Session representa a porta de entrada para operar com entidades mapeadas. O ponto principal aqui é entender os estados do objeto: transiente, persistente (gerenciado), detached e removido. Muitos erros de prova nascem justamente de confundir um verbo com o efeito dele, porque a banca troca os métodos como se fossem cartas de baralho. O método get(String entityName, Object id) busca a entidade pelo identificador e, se ela existir, devolve uma instância associada à Session, ou seja, uma instância persistente enquanto estiver vinculada ao contexto de persistência. Se não encontrar, retorna null. É por isso que a alternativa B está correta: o objeto retornado pelo get não é transiente nem detached, mas sim gerenciado pela Session. Já detach, merge, flush e refresh têm papéis bem diferentes. detach faz o contrário do que a alternativa A sugere: ele desassocia a instância da Session. merge copia o estado de um objeto para um contexto persistente, mas não transforma a própria instância em transiente. flush apenas sincroniza mudanças com o banco, sem marcar entidades para remoção. E o nome correto para recarregar o estado da entidade é refresh, não reload. Em prova, a ideia central é esta: get carrega e entrega uma entidade gerenciada, enquanto os outros métodos servem para desassociar, copiar estado, sincronizar ou recarregar. Se você lembrar dessa trilha, a pegadinha perde a graça.

Continue treinando

Questões relacionadas