Este texto entra para a lista dos que tentam explicar os conceitos trazidos pela Java Persistence API. Pretendo explicar o conceito de Provedor de persistência, qual o seu papel ao usar a JPA e como usar o Toplink ou o Hibernate em sua aplicação.
Como todo mundo já ficou sabendo a JPA não passa de um conjunto de interfaces e anotações que visam padronizar o acesso aos frameworks de mapeamento O/R. Desta forma foi criado um mercado para as empresas de “middleware” criarem suas próprias implementações.
O Provedor de Persistência é a implementação das interfaces existentes na JPA. Ele está para a JPA assim como o “driver do banco” está para a API JDBC.
Em ambos os casos o JCP define a API, isto é, a forma como os sistemas que nós criamos irão acessar as funcionalidades e os fornecedores implementam esta API. E nesta implementação as empresas podem trabalhar seus próprios conceitos de desempenho e otimização.
A Implementação de Referência, ou RI da sigla em inglês, é a desenvolvida pela Oracle para o servidor de aplicação Glassfish, e é baseada no Toplink(um framework de mapeamento O/R com mais de 10 anos de mercado). Sim ele concorre com o Hibernate neste mercado.
Para usar o Toplink como Provedor de Persistência em sua aplicação JPA, siga os passos:
- Entre na página de download da implementação da JPA;
- Baixe o arquivo glassfish-persistence-installer-v1_ur1-b14.jar;
- Execute o instalador:
java -jar glassfish-persistence-installer-v1_ur1-b14.jar. O instalador irá descompactar as duas licenças e os arquivos, que você deverá adicionar no classpath da sua aplicação:toplink-essentials.jar;toplink-essentials-agent.jar;
- Use os atributos do Toplink no seu arquivo persistence.xml. Segue um exemplo do arquivo persistence.xml usando o Toplink acessando o banco de dados Derby.
Mais informações sobre o Toplink podem ser encontradas no site da Oracle, que é uma boa referência, uma vez que foram eles que o criaram.
Agora… Vou mostrar a vantagem do JCP definir apenas a interface….
Se você nunca ouviu falar de Toplink e se sente mais confortável com o Hibernate, por exemplo, bastaria mudar o arquivo persistence.xml para usar o Hibernate e colocar os pacotes dele no seu projeto, que são:
antlr-2.7.6.jarasm.jarcglib-2.1.3.jarcommons-collections-2.1.1.jarcommons-logging.jarcos.jardom4j-1.6.1.jarehcache-1.2.3.jarejb3-persistence.jarhibernate3.jarhibernate-annotations.jarhibernate-entitymanager.jarjavassist.jarjboss-archive-browsing.jarjta.jar
Antes que você tenha uma síncope nervosa, todos esses arquivos são encontrados no pacote: Hibernate EntityManager(que já vem com os pacotes do Hibernate Annotations) e no Hibernate Core. Ambos estão no site do projeto, na parte onde é explicado o uso do Hibernate como um Provedor de Persistência.
Assim é possível trocar a implementação do provedor de persistência sem tocar no seu código fonte :-)
P.S.: Os arquivos persistence.xml estão com estensão doc porque o WordPress não deixa eu fazer upload de arquivo xml.
Escrito por AC de Souza