| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/05/2008 14:23:23
|
lucasap2005
JavaBaby
![[Avatar]](/images/avatar/95c8ba4434e9db2bf3e20c639b04c56f.jpg)
Membro desde: 14/07/2005 18:09:00
Mensagens: 94
Offline
|
Pessoal estou com seguinte duvida, quando salvo, altero ou deleto algo no meu sistema tenho que gerar um log no qual guardo usuario, data, e descricao.
A duvida é, em qual momento dessa operações que eu chamo este log?
Chamo depois de fazer a inserção por exemplo:
Isso não está muito procedural?
Me ajudem...vlw
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/05/2008 15:20:02
|
Alessandro Lazarotti
Virtual Machine Man
![[Avatar]](/images/avatar/2aaaddf27344ee54058548dc081c6541.jpg)
Membro desde: 21/01/2004 14:12:54
Mensagens: 719
Offline
|
Esse requisito é um "crosscutting concern", logo AOP pode resolve-lo.
Eu colocaria pointcuts para metodos do repositorio que são pertinentes ao requisito de Log.
Esse não é um problema do domínio e sim da aplicação... Seu domínio nem precisa saber que este requisito existe.
|
... Lezinho
------------------------
twitter: @lazarotti
http://alessandrolazarotti.wordpress.com/
http://jbossbrasil.org/
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/05/2008 15:54:35
|
sergiotaborda
GUJ Expert
![[Avatar]](/images/avatar/b4a0e0fbaa9f16d8947c49f4e610b549.png)
Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline
|
lucasap2005 wrote:
Isso não está muito procedural?
Esse "log" (o nome correto é historico já que log é algo do tipo do log4j) é, como já foi dito uma preocupação da apliação e não do
dominio. normalmente isso é feito para auditoria posterior
Se vc tem um repositorio editável (estou supondo que o seu repositorio não é um DAO) vc pode, ser não quiser usar AOP, utilizar o save para fazer as duas operações.
Ou pode utilizar um método num repositorio abstrato pai de todos os outros (padrão Layer SuperType) onde vc faz o processo de forma automática. Claro que para isso vc precisa de um padrão para o historico que seja compativel com o objeto do dominio. Normalmente o historico tem um data e hora , um usuario e os dados da entidade do dominio ou um codigo designando a operação que foi feita.
uma outra opção, se estiver usando DAO, além do repositorio , é colocar essa logica comum no DAO. Se seguio o padrão DAO vc tem uma interface DAO e um DAO concreto. Vc cria um outro DAO que delega todas as operaçãos ao DAO concreto, mas na operação de save ele processa os dados para criar o log. Alguma anotação do tipo @Auditable ou uma interface marcadora podem facilitar o uso desse "cuting concern"
|
Criando sua própria API de Validação
Blog do MiddleHeaven |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/05/2008 17:51:04
|
lucasap2005
JavaBaby
![[Avatar]](/images/avatar/95c8ba4434e9db2bf3e20c639b04c56f.jpg)
Membro desde: 14/07/2005 18:09:00
Mensagens: 94
Offline
|
Resolveria usando o AspectJ?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/05/2008 18:01:13
|
andrefariagomes
JavaBaby
![[Avatar]](/images/avatar/26ff6f4ca1cfca4861eb91876f706746.png)
Membro desde: 18/09/2004 11:10:06
Mensagens: 90
Offline
|
Eu já fiz algo deste tipo Implementando um Filtro para Hibernate (procure por org.Hibernate.EmptyInterceptor).
Ele verifica se a classe está anotada com @Auditable e faz o trabalho de persistir as ocorrências.
|
Abraço,
André Faria
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/05/2008 18:27:30
|
lucasap2005
JavaBaby
![[Avatar]](/images/avatar/95c8ba4434e9db2bf3e20c639b04c56f.jpg)
Membro desde: 14/07/2005 18:09:00
Mensagens: 94
Offline
|
Alguem poderia dar um exemplo de como seria com AOP.
Ja tinha ouvido falar, mas nunca estudei sobre AOP a fundo.
Gostaria de saber se alguem tem algum exemplo
Vlw galera pela ajuda
This message was edited 1 time. Last update was at 29/05/2008 18:28:42
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/05/2008 18:49:29
|
cmoscoso
Virtual Machine Man
Membro desde: 23/10/2007 10:08:29
Mensagens: 687
Offline
|
lucasap2005 wrote:Resolveria usando o AspectJ?
Depende, qual o seu problema?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/05/2008 19:12:00
|
lucasap2005
JavaBaby
![[Avatar]](/images/avatar/95c8ba4434e9db2bf3e20c639b04c56f.jpg)
Membro desde: 14/07/2005 18:09:00
Mensagens: 94
Offline
|
O meu problema a ser resolvido é guardar um historico das transações efetuadas por um usuario.
Exemplo: Ao cadastrar uma Empresa ou altera-la preciso guardar esse historico
|
|
|
 |
|
|