Archive for April, 2010

Criado_em, Atualizado_em – Timestamp com Hibernate

Posted in Hibernate, Java on April 25th, 2010 by Edipo L Federle – 1 Comment

Antes de ler: http://en.wikipedia.org/wiki/Timestamp

Uma das coisas que eu sempre achei muito bacana no Rails é a parte do ActiveRecord,(active record pattern) uma característica que particularmente gosto é a criação automatica dos timestemp das tabelas no banco de dados, no Rails quando tempo um modelo(model) quase sempre temos um tabela relacionada a esse modelo no banco de dados, para título de curiosidade do pessoal do Java vou apresentar abaixo uma classe(model) que representa um produto.

OBS: essa linhda validates_presence_of: eu coloquei somente para não deixar a classe vazia, ela faz a validação do campo nome e descrição.

Simples não? Claro temos a migration para isso.

Explicando para quem não conhece Ruby/Rails. Uma classe que herda de ActiveRecord::Migration e tem dois métodos um que irá criar nossa tabela e suas colunas, e um método caso quizermos apagar nossa tabela.(Essa classe irá ser executada quando você rodar o comando rake db:migrate), sem muitas explicações para não sair muito da linha, mas sendo um pouco xiita, muito elegante esse código não?
Como podemos ver nessa classe temos uma linha que diz t.timestamp, é essa linha que irá criar os created_at e updated_at na nossa tabela, essa linha vem junto com qualquer migração(model) padrão que você criar, bom isso não ?

Ultimamente eu estou tendo um contado maior com Java e Hibernate, não vamos falar sobre Java vs Ruby aqui(ainda), então eu estava mapeando classes para o banco e me vi sem os timestamps, pensei, o hibernate é algo bacana provavelmente tenha algo parecido, uma olhada no google e na documentação e achei uma forma bem bacana e de certa forma elegante(não quanto o Ruby, xiita :D ) de se fazer tal funcionalidade.

Abaixo apresento uma classe Java Product que faz o uso do timestamp através de anotações do Hibernate.

Bom um tanto elegante também, mas … bom, tirei os gets e sets para deixar mais pequena, com essas anotações(@prePersist, @PreUpdate) iremos ter esses campos no banco igualmente temos no Rails, agora quando você persistir seu objeto ele ira gravar a data e a hora, e toda as vezes que você atualizar esse objeto no banco de dados ele irá atualizar a data e hora do campo updated, como na imagem a abaixo:

Bom pessoal esse post foi rápido e espero que tenha sido bom. :D

Até Logo. :)