Estou precisando implementar um esquema de auditoria no sistema que estou desenvolvendo.
Isso é de vital importância, pois ele só será homologado no cliente, se todas as operações de inserção, update, e até mesmo algumas leituras forem registradas devidamente, com usuário que a realizou, hora, etc…
Existe algum trabalho open source que se propoe a fazer isso, ou perto disso? Alguma extensão do hibernate, por exemplo…
Caso negativo, estava pensando em usar orientação a aspectos para fazer isso… alguma dica?
Ou, se vc nao quiser AOP, mas ainda assim quiser algo que nao seja intrusivo no seu sistema, implemente um driver JDBC que faz o logging e delega as funcoes pro driver normal. Da um pouco de trabalho, mas nao requer macumba AOPzenta em lugar nenhum, e voce pode reusar nas aplicacoes que quiser
Com relação ao uso do DAO, infelizmente não o estou utilizando.
Uso algo semelhante com o hibernate ( EOF, do WebObjects ). Realizo todas as operações de sql em cima de algo como a Session do hibernate. Não tenho como modificar essa session para realizar a auditoria. Uso a session padrao ao longo de toda a aplicacao, e não uma estrutura desenvolvida por mim, oq me daria o poder de acrescentar facilmente o mecanismo de log ( Foi um erro, eu sei… )
Foi um requisito imposto de ultima hora, por isso nao me preocupei em fazê-lo desde o início…
Se o teu sistema usa Hibernate, USEEEEEEE um Session Interceptor no 2.x (no 3.0 não sei como fica).
Já fiz isso e foi assustadoramente facil, coisa de 1 dia de trabalho e tudo tava testado e funcionando direitinho. Ele auditava qualquer modificação junto com monte de metadata (usuario, ip, bla bla).
Eu tô fazendo isso para controlar minhas aplicaçoes prevalentes(obviamente não é o SQL q é centralizado)!!!
E funciona beem, sem nenhuma complexidade! :thumbup:
Teoricamente AOP é uma excelente solução mas na prática, às vezes, mata o desempenho do sistema. E se eu fosse usar AOP para isto me contentaria com um Proxy dinâmico (de interface com Java ou de classe com CGLIB).
As sugestões dadas para quem usa JDBC na raça ou Hibernate foram boas. Só acrescento que sempre que alguém pensar em alguma coisa referente a monitoração de um sistema, deve lembrar que JMX é bom, funciona bem e vem dentro do Java desde o Java 5.