Ir ao conteúdo

Posts recomendados

Postado

Ola Galera, sou estudante de Análise de Sistema e iniciante em programação, estou com o seguinte problema, fiz um Crud em java MySQL com tela de login e nível de acesso, agora o professor pediu um histórico de acesso do usuário, para saber quem alterou e excluiu um registro no sistema, abaixo segue a tabela do banco de dados.post-695920-0-78871700-1446473563_thumb.

Postado

Mas tem alguma ideia do que fazer?

Para o Java tem várias bibliotecas que ajudam a organizar logs, o Logging API do Java, Log4J, o Logback, etc.

 

Tem ideias mais automáticas, por exemplo, o interceptador. Pedir para o Java interceptar certos métodos, antes da sua execução verificar se está relacionado ao CRUD se sim coleta os dados necessários e guarda em algum lugar.

  • Curtir 1
Postado

Meu brother, quero uma coisa simples é para um trabalho da faculdade, o que você me sugere?


Mas tem alguma ideia do que fazer?

Para o Java tem várias bibliotecas que ajudam a organizar logs, o Logging API do Java, Log4J, o Logback, etc.

 

Tem ideias mais automáticas, por exemplo, o interceptador. Pedir para o Java interceptar certos métodos, antes da sua execução verificar se está relacionado ao CRUD se sim coleta os dados necessários e guarda em algum lugar.

Postado

De forma um pouco braçal uma camada a mais para manter o que funciona intocado e armazenar na base antes e depois de uma alteração, é sempre útil conhecer o valor anterior pra evidenciar reclamações rs:

class ProdutoService{private Usuario usuario;private ProdutoDAO dao;public ProdutoService(Usuario u, ProdutoDAO dao){this.usuario = u;this.dao = dao;}public void alteraProduto(Produto p){logaAntesDaGravaCao(p, usuario);//<---Isso manteria gravado na base o estado antes da alteraçãodao.salvaProduto(p);logaDepoisDaGravaCao(p, usuario);//<---Isso para apontar pra o que o usuário alterou}private logaAntesDaGravaCao(Produto p, usuario){//De imediato criaria uma tabela log, fácil implementação e fácil de consultar}}
Postado

Irmão desde já agradeço pela ajuda, você poderia da um exemplo de como criar a tabela log, tem que relacionar com quais tabelas, tem que criar trigger..?

 

 

De forma um pouco braçal uma camada a mais para manter o que funciona intocado e armazenar na base antes e depois de uma alteração, é sempre útil conhecer o valor anterior pra evidenciar reclamações rs:

 

class ProdutoService{
 
private Usuario usuario;
private ProdutoDAO dao;
 
public ProdutoService(Usuario u, ProdutoDAO dao){
this.usuario = u;
this.dao = dao;
}
 
public void alteraProduto(Produto p){
logaAntesDaGravaCao(p, usuario);//<---Isso manteria gravado na base o estado antes da alteração
dao.salvaProduto(p);
logaDepoisDaGravaCao(p, usuario);//<---Isso para apontar pra o que o usuário alterou
}
 
private logaAntesDaGravaCao(Produto p, usuario){
//De imediato criaria uma tabela log, fácil implementação e fácil de consultar
}
}

 

Postado

Então, não lembro quando foi a última vez que fiz um desses.

Mas o ideal é que o log fosse bem desaclopado do teu sistema, isso aumenta a portabilidade e analise mais independente do seu conteúdo.

Nenhum relacionamento, nem mesmo trigger que pode impactar no desempenho.

 

Um exemplo de tabela seria +- assim:

Colunas:

Data, Usuario, acao, descrição

 

Ex. de um registro:

 

19/11/2015 7:30:59, João, A, '391|Abacaxi|30,50'

20/11/2015 7:30:59, Tatu bola, A, '391|Abacaxi|59,50'

 

O usuário Tatu bola efetuou uma alteração no item id 391 chamado Abacaxi a 59,50, até então, a última alteração era do João

 

Como não defino nenhuma coluna específica, bote embutir quantas informações quiser na coluna descrição e que fosse interpretada por qualquer um sem que precise explicar como o teu sistema funciona.

 

Bolei essa ideia em 10 min, talvez tenha partir daí alguma outra ideia melhor

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...