Questão nº 54
Questão de Tecnologia da Informação · FCC TRT20 2024 (nº 54)
Um Analista de um Tribunal necessita habilitar o Hibernate Envers em uma entidade. Para isso, ele deve
- Autilizar o método `Session.saveOrUpdate()` para a entidade.
- Banotar a entidade com `@Audited`. (alternativa correta)
- Cconfigurar `hibernate.envers.enabled` como `true` no arquivo de configuração.
- Destender a classe `AuditedEntity` fornecida pelo Hibernate Envers.
- Econfigurar o `audit-log` no arquivo `persistence.xml`.
Resposta comentada
Gabarito Alternativa B
Hibernate Envers é uma ferramenta que rastreia automaticamente as mudanças feitas em suas entidades (objetos que representam dados no banco de dados), criando um histórico de versões sem que você precise escrever código manual para isso.
(A) Incorreta: `Session.saveOrUpdate()` é um método do Hibernate para persistir ou atualizar dados; ele não habilita a auditoria, apenas dispara a operação que o Envers irá interceptar se já estiver habilitado. A armadilha aqui é que esta é a operação que causa o registro da auditoria, mas não a que habilita a auditoria para a entidade.
(B) Correta: Anotar a entidade com `@Audited` é a forma principal e mais direta de instruir o Hibernate Envers a rastrear as alterações daquela entidade específica.
(C) Incorreta: `hibernate.envers.enabled=true` é uma configuração global que ativa o Envers no projeto, mas não especifica quais entidades serão auditadas; a anotação `@Audited` é quem faz isso na entidade.
(D) Incorreta: O Hibernate Envers não utiliza herança de uma classe `AuditedEntity` para habilitar a auditoria; ele se baseia em anotações.
(E) Incorreta: Configurar um `audit-log` no `persistence.xml` não é o mecanismo padrão do Envers para habilitar a auditoria de entidades; o Envers cria tabelas de auditoria no banco de dados.
Fonte: FCC TRT20 2024 Analista Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação (Caderno Tipo 003). Reproduzida para fins de estudo.