Pessoal estou com as seguintes duvidas. deixa eu explicar oque eu quero e espero que alguem entenda. Olha só… criei uma base de dados no oracle com uma tabela chamada(CADASTROS) com seus campos,Nome do Material | Serie | Codigo | Etc… | … | …
na primeira linha eu cadastrei Cadeira | 00000 | 0001 | Etc… | … | … e na segunda linha eu fiz um novo cadastro com outro material mesa, só que daí eu pesquisei cadeira e resolvi alterar os dados e editei, só que eu quero puchar um historico dos dados anteriores da cadeira. Como eu faço isso?
Como manter um historico no banco de dados?
10 Respostas
Você quer manter gravado na base de dados as informações anteriores, ou quer saber apenas o que foi alterado, como um log?
Pois pra ter as informações anteriores sempre que precisar, vc deve tê-las em uma tabela auxiliar, que poderia ser um historico do
objeto antes da ultima alteração.
vlw!
Sim isso mesmo, quero saber somento os dados anteriores, e como faço essa tabela auxiliar?
Haa blz vou dar uma estudada sobre isso hoje e amanha posto novamente e quanto isso respondem por favor. desde ja obridado.
Se for específico crie uma table de valores para a cadeira e toda vez que salve, vai lá e coloque o anterior.
Se for genérico, já vi gente criando uma estrutura de tabela de tabelas e tabela de colunas. Então o sistema
vai lá, processa as mudanças e grava nessas tables. Mas cuidado que essas tables crescem bastante!
Um solução mais bleeding edge seria aproveitar o poder de um CouchDB e gravar os valores antigos nele… quem sabe…
Trabalho com o DB2, e ele aceita colunas com o tipo XML,
Então pensei na seguinte solução:
Criar uma table de log, com a hora em que foi alterado, o tipo de alteração, a classe da entidade alterada, e um campo xml object com o objeto serializado quando foi modificado.
Existe um novo framework da JBoss que pode servir para o que você precisa.
O nome dele é Envers e ele basicamente gera um histórico de todas modificações que ocorrem para uma determinada entidade, mas ele faz mais que isso, é possivel restaurar o valor de um objeto que já foi alterado a muito tempo atraz.
O site é http://www.jboss.org/envers/ e vale a pena dar uma olhada.
Opa. blz dei uma olha e fui em downloads mais qual que eu baixo? pode me da um suport de como fazer pessoal?
O Envers trabalha em conjunto com o Hibernate. Então vai depender da versão que você utiliza do Hibernate (Espero que vc esteja usando hibernate).
Na description dos downloads mostra qual é a compatibilidade das versões.
http://www.jboss.org/envers/downloads/
Ex:
O Envers 1.2.1.GA release funciona com a versão 3.3 do Hibernate.
Depende do seu projeto.
onde vejo a versao do meu hibernate?
Você pode ver isso dentro do jar do Hibernate no arquivo META-INF\MANIFEST.MF
Mas se você esta tendo este tipo de dúvidas acredito que deve se aprofundar mais nos estudos básicos… Sem ofensas :).