Tenho recebido alguns questionamentos sobre Hibernate 3.5, ORM provider e JPA 2.0. Por isso resolvi escrever este artigo. Aguardo os comentários, dúvidas e críticas!
Preparação do ambiente de trabalho
Tenha por base o meu artigo JPA na Prática, faremos aqui similar no banco de
dados e na ferramenta, porém haverá uma modificação na biblioteca JPA.
A biblioteca JPA
O Hibernate é um ORM como o EclipseLink, muito utilizado no
desenvolvimento Web com Java, cuja versão 3.5 possui suporte a Java
Persistence API 2.0. Você pode baixá-la clicando
aqui. Clique em Download, no menu lateral
esquerdo.
A versão, no momento em que escrevo, é a 3.5.0-CR-2 (ainda em
desenvolvimento).
Os arquivos que terá de baixar serão:
- Hibernate Core
- Hibernate JPAModelGen
Ao baixar os arquivos, descompacte-os. Você precisará das seguintes
bibliotecas:
- hibernate3.jar
- antlr-2.7.6.jar
- commons-collections-3.1.jar
- dom4j-1.6.1.jar
- javassist-3.9.0.GA.jar
- jta-1.1.jar
- slf4j-api-1.5.8.jar
- hibernate-jpa-2.0-api-1.0.0-CR-1.jar
Além destes arquivos, será necessário utilizar as bibliotecas da Simple
Logging Facade for Java, SLF4J. Baixe o arquivo com todas as
bibliotecas da SLF4J aqui.
Descompacte o arquivo após baixá-lo. Você precisará das seguintes
bibliotecas:
- slf4j-jdk14-1.5.11.jar
- slf4j-log4j12-1.5.11.jar
O Projeto
O projeto para este pequeno tutorial é o mesmo do criado no artigo JPA na Prática Parte 1. Veja lá como fazê-lo.
As bibliotecas no projeto
Podemos tanto criar uma biblioteca de usuário, contendo todas elas
ou, simplesmente, adicionar todas ao seu projeto.
Figura 1
Bibliotecas do Hibernate 3.5 e SLF4J adicionadas ao projeto
Configurando o arquivo persistence.xml
Similar ao mostrado na JPA
2.0 na Prática Parte 2, no arquivo persistence.xml,
altere-o conforme a Listagem 1 abaixo:
Listagem 1 – O arquivo persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" 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_2_0.xsd">
<persistence-unit name="JpaNaPratica" transaction-type="RESOURCE_LOCAL">
<class>br.com.integrator.Categoria</class>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/jpapratica"></property>
<property name="javax.persistence.jdbc.user" value="edson"></property>
<property name="javax.persistence.jdbc.password" value="integrator"></property>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"></property>
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.hbm2ddl.auto" value="create"/>
</properties>
</persistence-unit>
</persistence>
Infelizmente, nem todas as propriedades de persistence.xml
são padronizadas, conforme já dito no artigo JPA na Prática
Parte 2. Para exibir a saída das instruções SQL geradas, assim
como outras informações, as seguintes propriedades foram adicionadas ao
arquivo persistence.xml:
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
Para criar a tabela, utilizamos a seguinte adição:
<property name="hibernate.hbm2ddl.auto" value="create"/>
Testando o Projeto
Similar ao mostrado na JPA
2.0 na Prática Parte 2, execute a classe com o método main()
e veja os resultados refletidos no banco de dados.
Hibernate ou EclipseLink?
Muitos me perguntam isso, querendo saber qual é o melhor. O ideal,
como sempre, é conhecer ambos e tirar as suas próprias conclusões. Em
JPA 2.0, ao menos por enquanto, no que foi mostrado, não há diferença.
Abraço a todos e até o próximo artigo.
*
Gostou do assunto? A iMasters Shop te ajuda a se aprofundar nos estudos!