Spring 2, JPA e Hibernate – Parte I

 

Introdução

O Spring Framework 2 contém uma série de novidades, como por exemplo, o pacote para desenvolvimento de Portlets MVC, Message Drive POJOs, etc. Porém, uma das principais é a integração com a Java Persistence API (JPA).

 

O objetivo desse artigo é mostrar como integrar essa nova tecnologia de persistência, que faz parte da especificação EJB 3, com Spring 2 e Hibernate.

 

JPA

A Java Persistence API é a persistência de POJOs por meio do mapeamento, utilizando-se das annotations ou de arquivos XML, entre objetos Java e um banco de dados relacional. Ela também traz uma nova linguagem para SQL-like queries, muito semelhante ao HQL do próprio Hibernate, como evolução do EJB QL.

 

A quantidade de classes e interfaces necessárias para desenvolvimento é muito menor quando comparada ao EntityBean EJB 2.x. Nessa versão, para se definir uma entidade persistente eram necessárias a classe que implentava a interface javax.entity.EntityBean, e mais duas classes que implementassem as interfaces javax.ejb.LocalObject e javax.ejbLocalHome. Sendo era necessário implementar diversos callback métodos da classe javax.entity.EntityBean, para o EntityBean se “comunicar” com o container: ejbRemove, ejbActivate, ejbPassivate, ejbLoad, ejbStore, setEntityContext, and unsetEntityContext.

 

Na JPA é apenas necessário que sua entidade, conforme dito anteriormente seja um POJO, e tenha a anotação @Entity definida na classe. Essa é uma grande vantagem com relação às versões anteriores. Informações sobre a entidade como relacionamentos, tipo de dados, etc., são definidos como annotations. Mais detalhes sobre o código e implementação serão mostrados nos próximos capítulos.

 

Outra grande novidade é que a JPA permite o uso de outras tecnologias de persistência como plugins à API. Isso permite que os desenvolvedores não deparem mais com problemas de incompatibilidade entre as diversas tecnologias existentes no mercado, atualmente, como: Hibernate, TopLink, JDO, etc.

 

Diversos produtos, hoje, já possuem uma implementação da JPA: Glassfish, JBoss (Hibernate), Oracle (TopLink), etc.

 

Nesse artigo estaremos utilizando o Hibernate como provider.

Leia todos os artigos da série