Por que eu devo ler este artigo:Este artigo é útil por mostrar como rastrear em um banco de dados o histórico de mudanças de entidades para saber quem, quando e o que foi alterado. Aprenderemos de forma básica e simples os principais conceitos relativos ao Envers, fazendo uma análise geral sobre seu funcionamento, mostrando como configurar um ambiente de desenvolvimento com Maven, Eclipse e MySQL para uso desta tecnologia e, em seguida, como implementar um sistema de auditoria.

Auditoria pode ser considerada como umexame sistemático das atividades desenvolvidas em determinada empresa ou setor, tendo como objetivo averiguar se essas atividades estão de acordo com as diretrizes planejadas e/ou estabelecidas previamente, se foram implementadas com eficácia e se estão adequadas.

Com o surgimento dos sistemas computacionais, as empresas passaram a confiar seus dados à área de Tecnologia da Informação (TI), que se tornou responsável pela proteção e garantia da consistência desses dados.

Como essas informações, na maioria das vezes, ficam armazenadas em bancos de dados, ele é o ponto de partida para iniciar uma auditoria ou conferência, tendo como insumos os dados recebidos e enviados pelas aplicações e sistemas corporativos. Dessa forma, auditar a persistência requer uma análise direta de operações que envolvem o acesso a bancos de dados.

Uma das funções da auditoria é monitorar quando e como o dado foi inserido, com o intuito de prevenir e detectar problemas no cumprimento das regras de negócio. Outra função tem relação com questões de segurança, objetivando garantir que usuários não autorizados não estejam acessando o banco de dados.

Uma boa auditoria de persistência deve fornecer informações sobre as operações realizadas nas tabelas envolvidas, como: quem inseriu, editou, excluiu ou até mesmo consultou informações; que informações foram essas; como estavam antes e como ficaram depois; quando foi feito, etc.

Com estas informações e caso algum dado seja inserido/alterado incorretamente, o analista terá meios para que possa recuperar a versão antiga da informação que deseja ou mesmo identificar o autor daquela alteração.

Um tipo de auditoria muito usado nos sistemas atuais é o baseado em Stored Procedures e Triggers, realizado diretamente no SGBD. O inconveniente desse método está na necessidade de se desenvolver uma estrutura específica para as auditorias diretamente no banco de dados, gerando assim uma alta dependência desse componente.

Independentemente do porte da aplicação, é cada vez mais comum a necessidade real de monitorar as ações do usuário frente ao sistema, de modo a prover controle sobre seu uso, assim como resguardar a integridade das informações administradas pela mesma.

Em torno desta necessidade, hoje, grande parte das aplicações desenvolvidas sobre a plataforma Java faz uso de frameworks ORM, sendo o Hibernate o mais adotado. E foi através dessa necessidade que foi criado o Envers.

Portanto, ao longo desse artigo abordaremos os principais conceitos e características do Hibernate Envers, e veremos como desenvolver um sistema de cadastro de projetos considerando como um dos seus principais requisitos não funcionais a realização de auditoria sobre seus dados.

Para tanto, serão empregados, além do Envers, a linguagem de programação Java, o ambiente de desenvolvimento Eclipse integrado ao Maven e o sistema de gerenciamento de banco de dados MySQL. O Hibernate será usado como solução integrante da camada de persistência, viabilizando a interface entre a aplicação e o MySQL.

Hibernate Envers

O Hibernate é um framework de mapeamento objeto relacional muito popular entre os desenvolvedores Java. Distribuído com a licença LGPL, foi criado por Gavin King em 2001, sendo, sem dúvida, o framework de persistência de dados mais utilizado, sobretudo por dar suporte a classes codificadas com agregações (aquelas que usam outras classes em suas operações), herança, polimorfismo, composições e coleções, por implementar a especificação Java Persistense API, por não restringir a arquitetura da aplicação e por ser amplamente documentado.

Segundo a documentação oficial: “o Hibernate pretende retirar do desenvolvedor cerca de 95% das tarefas mais comuns de persistência de dados”.

Sua principal característica é o mapeamento de classes Java em tabelas da base de dados (e dos tipos de dados Java para os da SQL). Além disso, o Hibernate gera os comandos SQL e libera o desenvolvedor do trabalho manual de transformação, mantendo o programa portável para quaisquer bancos de dados SQL.

O Envers é um projeto open source cria ...

Fim do trecho gratuito • continue abaixo
CONTEÚDO EXCLUSIVO

Desbloqueie toda a DevMedia

  • +2000 artigos e vídeos
  • +40 trilhas sobre Front-end, Back-end, IA e muito mais
  • +5000 exercícios práticos
  • Mentorias ao vivo individuais
até 50% OFF
A partir de
R$ 69 /mês
Assinar agora