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
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
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. 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
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
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
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

Alo mundojpa

  • 1.
    Tutorial - Introduçãoao 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 telaserá 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 comoinstâ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 oEclipse 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, executeo 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