Implementações JPA

Bom dia pessoal, esse é meu primeiro post no GUJ mas acompanho o fórum
a pelo menos 2 anos (sempre achei o que precisei então nunca postei).

Agora mais do que uma pergunta gostaria de receber algumas idéias.

Primeiro quais são as implementações da JPA que vs conhecem e principalmente
quais são as mais simples (digo simples no sentido de pequenas também), conheço
o hibernate, e já ouvi falar no TopLink, mas gostaria de conhecer algo bem simples
mesmo, sem xml, somente a classe.

Outra coisa, seria possível implementar JPA extendendo uma classe (o que não vejo
problema, mas talvez vá contra algum principio), penso nisso como uma comparação
para com o Ruby on Rails (que realmente sou muito fã e utilizo em alguns projetos).
A idéa básica seria fazer a própria classe, por ex. Pessoa, ter métodos como, findAll(),
que retorne um List, e um método findOne(), que retorne um objeto do TIPO
Pessoa, sem ter que ficar fazendo cast.

Se minhas idéias forem possíveis (e viáveis claro!), e ainda não tiverem sido colocadas
em prática voltarei a pedir ajuda para tentar contruir algo parecido (e aí vcs estão ferrados
pra me ajudar).

Bom pessoal, era isso, desculpe se já há outro tópico mas eu não encontrei nada parecido
(se existir me indiquem).


Heber E. Senger

Heber,

A especificação JPA é única, então não importa qual implementação você vá utilizar (hibernate, toplink, openjpa) as configurações serão as mesmas (em todas essas não existe a necessidade de XML, apensar o arquivo de configuração persistence.xml).
O que acontece em muitos casos, é que a quantidade de arquivos .JAR. POr exemplo, o Toplink usa apenas 2 JARs, enquanto o hibernate usa (vários).

Em relação a Entidade extender uma outra classe, realmente a especificação não limita isso. Se você quer algo similar ao Rails, dê uma estudada no padrão de projeto chamado Active Record (similar ao nome do Rails, né? ).

Só para deixar claro, não existe uma solução IDEAL para todos os problemas. Cada requisito possui suas pecularidades, portanto, os padrões de projetos utilizados são diferentes.

Valeu Jair,

o que eu quis dizer é qual a implementação, mais simples, eu sei que
é uma especificação e tem vária implementações.

A boa dica foi o Active Record (mesmo no do sub-framework do rails).

E eu não procuro a solução IDEAL para tudo, por isso mesmo acho o Hibernate
muuuuuuuuito bom, mas é complexo, pelo menos até onde eu conheço.

Mas valeu por todas as dicas, outra coisa, já que existe o Active Record para
o java, será que existe tbm o Action Pack???

hehe…

Se for de fato usar a especificação JPA, não vai importar muito qual implementação você use (como eu disse, o que muda basicamente é a quantidade de arquivos .JARs e algumas configurações específicas no persistence.xml), porém se você for comparar o JPA com o Hibernate-core, nesse caso o Hibernate realmente tem mais features.

Olhando no google eu achei isso http://d-haven.org/actionpack/index.html, mas nunca usei e portanto não posso comparar com o Rails :slight_smile:

Realmente se eu tivesse procurado pelo ActiveRecord em Java teria achado!

hehe…

Outra coisa não sabia que o TopLink são apenas 2 jars, vou estuda-lo melhor.

Valeu Jair!!!

[quote=hesenger]
Outra coisa não sabia que o TopLink são apenas 2 jars, vou estuda-lo melhor.[/quote]

Esse post http://www.jairrillo.com/blog/2008/09/04/introduction-to-jpa-part-1-getting-started/ dá uma visão geral das 3 implementações de JPA e quais os .JARs que são requeridos para cada uma.