FC ConcursosFC Concursos

Questão FC890591

O analista João deve utilizar o Hibernate Envers para implementar a auditoria de entidades em um sistema de gestão de projetos. Um dos requisitos de negócio é que, ao ser realizada

Frameworks para Desenvolvimento

FGV · 2026

O analista João deve utilizar o Hibernate Envers para implementar a auditoria de entidades em um sistema de gestão de projetos. Um dos requisitos de negócio é que, ao ser realizada uma alteração na entidade Projeto, o histórico de revisões dessa entidade inclua, além dos dados da alteração, o nome do usuário responsável pela modificação.

 

Para atender ao requisito de negócio da forma mais adequada, João deve:

  1. utilizar a funcionalidade de Customized Revision Metadata do Envers para armazenar o nome do usuário em um campo específico da tabela de auditoria da entidade Projeto;
  2. implementar um filtro de auditoria no Envers para interceptar as operações de alteração na entidade Projeto e adicionar o nome do usuário ao histórico de revisões;
  3. criar uma anotação customizada, herdada de AuditOverride, para incluir o nome do usuário como um atributo adicional no registro de auditoria da entidade Projeto;
  4. utilizar um interceptor do Hibernate para capturar as operações de persistência e adicionar o nome do usuário ao campo revisedBy em cada registro de auditoria da entidade Projeto;
  5. configurar um Revision Listener no Envers para capturar o evento de alteração na entidade Projeto e preencher um campo customizado com o nome do usuário logado no momento da alteração.
Mostrar resposta e comentário

Gabarito

Errado

Comentário do professor

A solução correta é criar uma entidade de revisão customizada anotada com @RevisionEntity e implementar um RevisionListener que preenche um campo adicional (por exemplo, username) sempre que uma nova revisão for criada.

O RevisionListener é invocado pelo Envers no momento da criação da revisão; dentro dele você obtém o nome do usuário logado (via contexto de segurança, como SecurityContextHolder, ou via um ThreadLocal populado pela camada de autenticação) e atribui esse valor ao objeto de revisão antes da persistência.

As entidades auditadas com @Audited passam a registrar revisões nas tabelas geradas pelo Envers, e a entidade de revisão customizada garante que cada registro de revisão contenha, além dos dados da alteração, o nome do usuário responsável.

Essa abordagem integra o metadado de auditoria ao fluxo de revisão do Envers, garantindo rastreabilidade por usuário em todas as alterações.

Conteúdo do catálogo FC Concursos · Atualizado em

Continue aprendendo