Escolar Documentos
Profissional Documentos
Cultura Documentos
• Diver JDBC: É a implementação do JDBC para o SGBD que você utilizará (disponível no site de
cada fabricante de SGBD).
2) Configuração do CLASSPATH:
De posse dos recursos adquiridos no site oficial do Hibernate, você agora precisa acrescentá-los ao seu
projeto no Eclipse. Isto é feito por meio da configuração do CLASSPATH4 do seu projeto Java. Veja em
detalhes como fazer isso no tópico “Como configurar o CLASSPATH do projeto?” mais adiante.
Por ora, vamos conhecer os pacotes (arquivos .jar5) necessários ao seu projeto Java que vai utilizar o
Hibernate. Você precisará incluir no seu projeto os seguintes arquivos:
• Todos os pacotes dentro do diretório lib do Hibernate Core, que são as dependências e recursos
utilizados pelo Hibernate; Exemplo: d:\java-frameworks\hibernate-3.2\lib\*
• Todos os pacotes dentro do diretório lib do Hibernate Annotetions, que são suas dependências;
Exemplo: d:\java-frameworks\hibernate-annotetions-3.3.0\lib\*
1
Tutorial Hibernate
• Uso de XML: Consiste em se criar um arquivo XML para mapear cada classe de domínio do
projeto cujos objetos serão persistidos. É preciso acrescentar estes arquivos XML de mapeamento
no arquivo hibernate.cfg.xml, para indicar a localização física de cada um deles.
• Uso de Anotações: Também conhecidas como annotetions é uma forma prática e fácil de fazer
“anotações” no código Java, ou seja, de incluir metadados sobre uma classe dentro do próprio
código desta classe.
• Os arquivos XML que fazem o mapeamento das classes de domínio do seu projeto, caso haja, na
propriedade mapping resource;
• As classes de domínio mapeadas por anotações, caso haja, na propriedade mapping class.
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
<property name="hibernate.connection.url">jdbc:postgresql://127.0.0.1:5432/book1?
charSet=LATIN1</property>
<property name="hibernate.connection.username">postgres</property>
<property name="hibernate.connection.password">postgres</property>
<property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
<property name="current_session_context_class">thread</property>
<property name="hibernate.format_sql" >true</property>
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<property name="show_sql">false</property>
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.timeout">180</property>
<property name="hibernate.c3p0.item_test_period">100</property>
</session-factory>
</hibernate-configuration>
2
Tutorial Hibernate
Configuration (org.hibernate.Configuration)
Realiza as configurações para a inicialização do Hibernate, através de definições como:
a URL JDBC de conexão, o usuário e senha do banco, o driver JDBC do banco de dados, o dialeto
Hibernate para este banco, etc, assim como quais são os mapeamentos entre as classes persistentes e as
tabelas do banco de dados.
SessionFactory (org.hibernate.SessionFactory)
É conhecido com “fábrica de sessões” porque ele cria os objetos “Session” a partir de
uma configuração (Configuration). Sua função é manter em memória os mapeamentos entre as classes e
as tabelas, a fim de permitir a criação de objetos Session que serão capazes de fazer a persistência dos
dados a partir destes mapeamentos. Aconselha-se criar apenas uma instância desta classe para criar
quantas sessões forem necessárias, uma vez que é um custo alto cria-lo várias vezes, e ele pode ser
acessado por vários processos simultaneamente.
Session (org.hibernate.Session)
A instância da classe Session é responsável por fazer a persistência dos objetos
mapeados para as tabelas do banco através de uma conexão JDBC, sendo possível criar, remover,
atualizar e recuperar objetos persistentes. A criação de cada instância tem um baixo custo e a mesma
não pode ser acessada por vários processos simultaneamente de forma segura.
Transaction (org.hibernate.Transaction)
É usada para controlar as transações feitas através do Hibernate, sendo criada a partir
de um objeto Session. Permite confirmar as alterações feitas durante a transação (commit) ou desfazer
essas alterações (rollback).
Dialetos do Hibernate:
Um dialeto é uma classe especial que permite ao Hibernate conhecer as
particularidades de cada banco de dados. O Hibernate trabalha com dialetos para um grande número de
bancos de dados, tais como: PostgreSQL, FirebirdSQL, Oracle, DB2, MySQL, Sybase, Progress, Microsoft
SQL Server, Ingres, Informix entre outros.
• · DB2 - org.hibernate.dialect.DB2Dialect
3
Tutorial Hibernate
• · HSQLDB - org.hibernate.dialect.HSQLDialect
• · Informix - org.hibernate.dialect.InformixDialect
• · Ingres - org.hibernate.dialect.IngresDialect
• · Interbase - org.hibernate.dialect.InterbaseDialect
• · Pointbase - org.hibernate.dialect.PointbaseDialect
• · PostgreSQL - org.hibernate.dialect.PostgreSQLDialect
• · Mckoi SQL - org.hibernate.dialect.MckoiDialect
• · Microsoft SQL Server - org.hibernate.dialect.SQLServerDialect
• · MySQL - org.hibernate.dialect.MySQLDialect
• · Oracle (any version) - org.hibernate.dialect.OracleDialect
• · Oracle 9 - org.hibernate.dialect.Oracle9Dialect
• · Progress - org.hibernate.dialect.ProgressDialect
• · FrontBase - org.hibernate.dialect.FrontbaseDialect
• · SAP DB - org.hibernate.dialect.SAPDBDialect
• · Sybase - org.hibernate.dialect.SybaseDialect
Classes Persistentes
As entidades domínio de negócio de uma aplicação são implementadas por classes
persistentes. O Hibernate associa cada uma das tabelas do banco de dados a um POJO (Plain Old Java
Object), também conhecidos como VO (Value Object). POJO´s ou VO’s são objetos Java que seguem o
padrão JavaBeans (possuem um método construtor padrão sem argumentos, seus atributos são privados
e possuem e métodos getters e setters públicos para acessar os seus atributos).
4
Tutorial Hibernate
5
Tutorial Hibernate
Para mapear a classe basta adicionar algumas poucas anotações em nosso código.
Anotação é um recurso do Java que permite inserir metadados em relação a nossa classe, atributos e
métodos. Essas anotações depois poderão ser lidas por frameworks e bibliotecas, para que eles tomem
decisões baseadas nessas pequenas configurações.
Para essa nossa classe em particular, precisamos de apenas três anotações:
@Entity
public class Usuario
{
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "gen_usuario")
@SequenceGenerator(name = "gen_usuario", sequenceName = "seq_usuario")
private Long id;
Mas em que tabela essa classe será gravada? Em quais colunas? Que tipo de coluna? Na ausência de
configurações mais específicas, o Hibernate vai usar convenções: a classe Usuario será gravada na tabela
de nome também Usuario, e o atributo login em uma coluna de nome login também!
Se quisermos configurações diferentes das convenções, basta usarmos outras anotações, que são
completamente opcionais. Por exemplo, para mapear o atributo 'login' numa coluna chamada
'login_usuario' faríamos:
Também podemos especificar o nome da tabela, e até criar índices únicos através de @Table:
@Entity
@Table(name = "usuario", uniqueConstraints = { @UniqueConstraint(columnNames = { "login" }) })
public class Usuario
6
Tutorial Hibernate