1. Tutorial - Introdução ao JPA
Autor: Marco Aurélio S. Mendes – corelio@gmail.com
O exemplo abaixo é uma introdução ao framework JPA, adaptado e regionalizado a partir
do seguinte artigo: http://today.java.net/pub/a/today/2006/05/23/ejb3-persistence-api-for-
client-side-developer.html
Este exemplo usa o banco de dados embutido hsqlDB e o provider Oracle TopLink. Todo
o código necessário esta no projeto que acompanha este exemplo.
1. Importe o projeto AloMundoJPA que acompanha este documento no Eclipse.
2. Inicie o servidor de banco Hypersonic SQL (hsqldb) com o seguinte comando no
prompt do DOS.
java –cp ./lib/hsqldb.jar org.hsqldb.Server
* Antes de executar este comando, vá para o diretório raiz do projeto AloMundoJPA.
1
2. A seguinte tela será exibida.
Procure a mensagem: Startup Sequence completed in xxxx ms.
Esta mensagem indica que o banco de dados está disponível.
3. Inicie o aplicativo de linha de comando de gerência do banco de dados no
hsqlDB.
2
3. O seguinte aplicativo (HSQL Database Manager) será exibido:
Este aplicativo é um administrador de banco de dados simplificado. Ele possui três áreas
centrais:
• Área esquerda: Permite visualizar esquemas, tabelas e seus elementos.
• Área superior direita: Permite entrar comandos SQL.
• Área central: Exibe resultados dos comandos SQL
Inicialmente, na carga do aplicativo DatabaseManager, é exibido um diálogo que permite
que a conexão a um banco seja realizada.
3
4. 4. Usaremos como instância do banco o nome ACMEDB. No diálogo acima, mude
os parâmetros conforme a tela abaixo:
5. Na tela exibida, informe o seguinte comando SQL, necessário para criar a tabela
de pessoas do nosso teste. O comando SQL deve ser informado na caixa de texto
na área superiod da janela HSQL DatabaseManager.
CREATE TABLE PESSOA (ID INTEGER PRIMARY KEY, PRIMEIRO VARCHAR,
MEIO VARCHAR, FIM VARCHAR)
A seguinte tela será exibida:
Como teste, faça uma consulta na tabela PESSOA, conforme mostrado abaixo.
4
5. 6. Neste instante, o banco foi criado. Você pode finalizar agora o HSQL Database
Manager, de forma que o prompt no DOS esteja liberado, como mostrado na tela
abaixo.
5
6. 7. Abra o Eclipse e aponte para o projeto importado anteriormente no passo 1.
Examine o arquivo persistence.xml. Este arquivo define uma ou mais unidades de
persistência, que definem os mapeamento de classes para tabelas.
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
version="1.0">
<persistence-unit name="exemplo">
<provider>
oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider
</provider>
<class>com.acme.Pessoa</class>
<properties>
<property name="toplink.jdbc.driver"
value="org.hsqldb.jdbcDriver" />
<property name="toplink.jdbc.url" value="jdbc:hsqldb:ACMEDB" />
<property name="toplink.jdbc.user" value="sa" />
<property name="toplink.jdbc.password" value="" />
<property name="toplink.logging.level" value="INFO" />
</properties>
</persistence-unit>
</persistence>
Neste exemplo, definimos uma unidade de persistência chamada exemplo. Ela define que
o provider de persistência será o framework OracleTopLink. Alternativamente,
poderíamos ter usado o Hibernate. Conceitualmente, ambos funcionam como possíveis
implementações da especificação JPA.
Examine também a classe com.acme.Pessoa, que contém um POJO muito simples, mas
completo para persistência.
6
7. 8. Finalmente, execute o aplicativo Main, que insere duas pessoas no nosso banco de
dados. Após a execução deste classe, uma saída semelhante à abaixo deve ser
exibida.
[TopLink Info]: 2007.04.09 03:06:39.569--ServerSession(15606519)--
TopLink, version: Oracle TopLink Essentials - 2006.8 (Build 060830)
[TopLink Info]: 2007.04.09 03:06:40.038--Not able to detect platform
for vendor name [HSQL Database Engine]. Defaulting to
[oracle.toplink.essentials.platform.database.DatabasePlatform]. The
database dialect used may not match with the database you are using.
Please explicitly provide a platform using property
toplink.platform.class.name.
[TopLink Info]: 2007.04.09 03:06:40.147--ServerSession(15606519)--
file:/C:/Documents%20and%20Settings/marco.aurelio/workspace/AloMundoJPA
/bin-exemplo login successful
Procurando pessoas...
Pesquisa finalizada...
Criacao de pessoas...
Pessoas criadas...
Procurando pessoas...
Achei o Joao: Joao Silva
Pesquisa finalizada...
[TopLink Info]: 2007.04.09 03:06:40.412--ServerSession(15606519)--
file:/C:/Documents%20and%20Settings/marco.aurelio/workspace/AloMundoJPA
/bin-exemplo logout successful
Opcionalmente, abra o Database Manager e faça uma consulta no banco para verificar
que os elementos realmente foram gravados.
Informações Complementares
Para referências ao JPA, busque os seguintes links:
• JPA FAQ: http://java.sun.com/javaee/overview/faq/persistence.jsp
• Oracle TopLink JPA Annotations:
http://www.oracle.com/technology/products/ias/toplink/jpa/resources/toplink-jpa-annotations.html
• JBOSS Hibernate Entity Manager:
http://www.hibernate.org/hib_docs/entitymanager/reference/en/html/
• Reference Guide: http://www.solarmetric.com/resources/ejb-api-quickref.pdf
• EJB-SQL: http://www.hibernate.org/hib_docs/entitymanager/reference/en/html/queryhql.html
• Exemplo JPA: https://glassfish.dev.java.net/javaee5/persistence/persistence-example.html
7