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