Provedor de persistência JPA

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:

  1. Entre na página de download da implementação da JPA;
  2. Baixe o arquivo glassfish-persistence-installer-v1_ur1-b14.jar;
  3. 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;
  4. 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.jar
  • asm.jar
  • cglib-2.1.3.jar
  • commons-collections-2.1.1.jar
  • commons-logging.jar
  • cos.jar
  • dom4j-1.6.1.jar
  • ehcache-1.2.3.jar
  • ejb3-persistence.jar
  • hibernate3.jar
  • hibernate-annotations.jar
  • hibernate-entitymanager.jar
  • javassist.jar
  • jboss-archive-browsing.jar
  • jta.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.

Anúncios

6 opiniões sobre “Provedor de persistência JPA

  1. – Hibernate Core: É o Hibernate propriamente dito.
    – Hibernate Annotations: A partir do Java 5 o mapeamento do Hibernate pode ser feito usando o recurso de anotações nas classes ao invés do XML de mapeamento. Além de ser mais enxuto, tem a avaliação das anotações pelo compilador identificando erros de sintaxe mais cedo.
    – Hibernate EntityManager: Implementação das interfaces definidas na JPA, para usar o Hibernate Core como provedor de persistência.

    Espero ter exclarecido. Qualquer coisa, comenta aí…

    [],
    AC

  2. Não poderia haver explicação melhor pra este assunto.
    Ha 2 dias eu tava “escacaviando” toda essa historia de JPA.
    Com essa explicacao de provedor tudo ficou mais claro!

    Mas eu fikei com uma pergunta na cabeça… A SUN não criou nenhuma implementação do JPA? Ou seja, não existe nenhum provedor da SUN?
    Daí se a SUN nao tem nenhum provedor eu pergunto… por que JPA não se chama Java Persistence Skeleton? hehehe…

    Esse post valeu mto mesmo! R$10,00 pra vc!

  3. Boa tarde,

    Você sabe se é possível utilizar JPA com o pool de conexões do Tomcat?

    Caso sim, tanto Hibernate quanto Toplink?

    Achei poucos links sobre o assunto, e nenhum funcionou, está correto utilizar JPA com o pool do Tomcat? É que tem tão pouco material sobre o assunto.

    Agradeço pela atenção.

    Forte abraço,
    Gustavo.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s