Java Persistence Architecture API (JPA): O que é, como baixar, instalar, configurar e testar
1 - Introdução
O Java Persistence Architecture API (JPA) é uma especificação Java para acessar, persistir (gravar) e gerenciar dados entre objetos/classes Java e o banco de dados relacional. O JPA foi definido inicialmente como parte da especificação EJB 3.0 como uma substituição para a especificação EJB 2 CMP Entity Beans. Hoje, O JPA é a abordagem padrão para o mapeamento objeto-relacional (Object to Relational Mapping (ORM)) na indústria de sistemas em Java.
Importante lembrar que o JPA é somente uma especificação, não um produto. E como tal, não consegue realizar a persistência de dados. Ele é somente um conjunto de interfaces e, portanto, requer uma implementação. Há várias implementações open source e comerciais do JPA que podemos adotar e usar em nossas aplicações. Além disso, espera-se que todos os servidores de aplicação Java EE ofereçam suporte a JPA. Finalmente, um banco de dados é outro requisito que não pode faltar. O JPA sozinho não produz os resultados esperados, a saber, a obtenção, leitura e persistência de dados em um banco de dados.
O JPA permite que um POJO ou POJOs (Plain Old Java Objects - classes simples) sejam facilmente persistidos sem a necessidade de implementar quaisquer interfaces ou métodos, como era exigido na especificação EJB 2 CMP. O mapeamento objeto-relacional de um objeto pode ser definido, em JPA, por meio de anotações (annotations) padrão ou XML que definem como a classe Java é mapeada para uma tabela no banco de dados relacional. Temos também uma API EntityManager de tempo de execução para processar queries (consultas) e transações nos objetos e, consequentemente, no banco de dados. O JPA define também uma linguagem de query a nível de objetos chamada de JPQL que permite reconstruir objetos a partir de suas informações no banco de dados.
2 - Qual implementação devo usar?
Atualmente há várias implementações interessantes de JPA. Entre estas podemos citar: EclipseLink (Eclipse), TopLink (Oracle), Hibernate (RedHat), TopLink Essentials (Glassfish), Kodo (Oracle), Open JPA (Apache) e Ebean (SourceForge). É claro que cada um alega possuir suas vantagens em relação aos demais. Não entrarei neste mérito. Fica a cargo do leitor decidir qual vai usar. Para este artigo, contudo, usarei a implementação do Glassfish, ou seja, o TopLink Essentials.
3 - Baixando, instalando e configurando o TopLink Essentials
Durante a autoria deste artigo, a implementação JPA do Glassfish é uma das mais populares entre os desenvolvedores Java. Por esta razão vamos baixá-la. Para isso, aponte seu navegador para
http://glassfish.dev.java.net/downloads/persistence/JavaPersistence.html e localize a seção Milestone binary builds. O arquivo a ser baixado é glassfish-persistence-installer-v2-b58g.jar (ou parecido), com o tamanho de 2,9 Mb. Hora de tomar um cafezinho.
Finalizado o download, mova o arquivo para uma pasta na raiz de seu sistema (ou o diretório que preferir). Em meu sistema optei por "c:\jpa".
Hora de instalar o TopLink Essentials. Abra um janela de comando, navegue até o diretório "c:\jpa" e dispare o comando:
Como resultado da execução deste comando nós teremos a seguinte estrutura de diretórios:
Hora de configurar. Tudo que temos que fazer é adicionar os JARs toplink-essentials-agent.jar e toplink-essentials.jar no CLASSPATH de nosso sistema.
4 - Testando o TopLink Essentials
Hora de testar o TopLink Essentials. Para isso usaremos uma aplicação Java SE bem simples. Veja o código:
O que fizemos neste exemplo foi importar as classes e interfaces do pacote javax.persistence, a saber, EntityManager, EntityManagerFactory, Persistence, EntityTransaction, Query, etc. Após o import nós declaramos objetos das interfaces EntityManagerFactory e EntityManager.
E isso é tudo. Se você seguiu todos os passos anteriores atentamente, já está pronto para iniciar seus estudos de JPA. Boa jornada.