1
resposta

Auditoria + JPA

Além de proteger a aplicação com login e senha, uma outra funcionalidade que quase toda aplicação corporativa tem é a capacidade de realizar Auditoria e Logging para monitorar e armazenar as ações do usuário.

Para tal tarefa, normalmente temos um código desse tipo no set Controler,ManagedBean,etc.. no casso do nosso curso no ManagedBean, para por exemplo gravar quem alterou dados de um livro

public void salvar(){
livro.setDataUltimaAlteracao(new Date());
livro.setusuarioUltimaAlteracao(pegaUsuarioLogado);
logger.salvar("algum texto ");
livroDAO.salvar(livro);
}

A meu ver isso é um código cross cutting pois não está diretamente ligado ao negócio e nem deveria estar no managed bean. Andei lendo sobre Hibernate Envers, mas pensei em algo mais simples, pensei em utilizar ou um interceptor ou os EntityListeners do JPA que me pareceu uma solução bem bacana.

A pergunta. Eu consigo recuperar o usuário logado da aplicação dentro de um EntityListener do JPA usando CDI,Spring,...?

1 resposta

Ótima questão com um todo.

Hibernate Envers é uma ótima ideia se você quer algo mais complexo e o uso de interceptors é uma boa se você quer algo mais simples e, ao mesmo tempo, deixar seu código mais elegante.

Acredito que você pode deixar as informações do usuário logado na sessão do usuário e recuperar quando quiser, onde quer que seja.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software