Terça-feira, Março 06, 2007

ActiveRecord em Java com Hibernate e Spring


A alguns dias comecei a estudar o Ruby on Rails e percebi que quando trabalhava com objetos persistentes, não usava DAO ou outras classes para auxiliar nas operações de persistência de objetos(GRUD). Achei isso muito bom pois não precisava ficar escrevendo classes extras e o código ficava mais claro e simples. Então fui a procura de uma implementação neste modelo para Java, encontrei o projeto GRAILS que é uma implementação de Rails para Java usando a linguagem Groovy, Hibernate, Spring e etc. O GRAILS tem um módulo chamado GORM (Groovy Object Relational Mapping) que implementa ActiveRecord, então como tinha que estudar o GRAILS para um desenvolvimento que iriamos fazer na empresa em que trabalho, aproveitei para saber como GORM implementa o ActiveRecord. Por ser escrito em Groovy a implementação nesta linguagem e mais elegante mas, a tradução disso para Java não ficou tão ruim. Ainda tenho que melhorar algumas coisas que estão cheirando mal. Acredito que descrevendo como implementar isso em Java, surgirão sugestões e melhorias.
Para começarmos temos que fazer o download de alguns frameworks, são elas:

1. Hibernate 3.2.2 e Hibernate Annotations 3.2.1

2. Spring 2.2


Após os downloads, criamos um projeto no eclipse e adicionamos ao classpath do projeto as dependências.


A minha estrutura ficou assim:


Explicando os pacotes:

com.aprendarapido.jactiverecord.bo:
Neste pacote ficam as classes dos objetos persistentes(POJOS).
com.aprendarapido.jactiverecord.builder:
Neste pacote fica a classe que configura e cria um SessionFactory
com.aprendarapido.jactiverecord.execucao:
Neste pacote ficam classes que executam operações de persistência e demonstram o uso do padrão ActiveRecord.
com.aprendarapido.jactiverecord.main:
Neste pacote fica a classe principal, ela coloca as execuções em Threads concorrentes, para demonstrar o controle do uso de sessões hibernate por thread.

Classes passo a passo no próximo post.

Quem sou eu

Minha foto
agnaldo4j
Sou alegre, gosto de fazer amizades e quando possível ajudar quem precisa.
Visualizar meu perfil completo

agnaldo4j's shared items