Professional Documents
Culture Documents
Hibernate
Raquel Defelippo Rodrigues
Hibernate
Hibernate um framework usado para
persistir objetos Java em tabelas de
banco de dados relacionais.
Por qu precisamos do Hibernate?
Por qu precisamos do Hibernate?
Trabalhamos com
Trabalhamos com
Universidade
Departamento
Endereo
1
1
1
N
Modelo Relacional
Modelo Relacional
+
Java + Modelo Relacional
Java + Modelo Relacional
Universidade
Departamento
Endereo
1
1
1
N
Modelo Relacional Modelo Relacional
H H
I I
B B
E E
R R
N N
A A
T T
E E
Java + Modelo Relacional
Java + Modelo Relacional
Universidade
Departamento
Endereo
1
1
1
N
Modelo Relacional Modelo Relacional
H H
I I
B B
E E
R R
N N
A A
T T
E E
O
Hibernate
Hibernate um
mapeamento objeto/relacional .
Mas o que ORM ?
(Mapeamento Objeto/Relacional)
Mas o que ORM ?
(Mapeamento Objeto/Relacional)
ORM
ORM
ORM um meio de persistir objetos de um
aplicativo Java em tabelas de bancos de
dados relacionais, de maneira transparente.
Hibernate
Hibernate uma soluo open source de
ORM.
Onde se localiza o Hibernate?
Onde se localiza o Hibernate?
Arquitetura em camadas
Arquitetura em camadas
de projetos OO
de projetos OO
Camada de Apresentao
Camada de Persistncia
Hibernate Hibernate
Camada de Regras de
Negcio
Classes
de
Utilidade
e
Assistente
Banco de
Dados
Abstrao do SGBD
O Hibernate est localizado entre o JDBC e a
aplicao.
Caso seja preciso mudar o SGBD de sua
aplicao basta apenas alterar o driver usado
e sua referncia no arquivo hibernate.cfg.xml.
Como
Como
a Arquitetura do
a Arquitetura do
Hibernate?
Hibernate?
Arquitetura do Hibernate
Arquitetura do Hibernate
Camada de Negcio
Classes de
Persistncia
Interceptor
Ciclo de Vida
Tabela de Validao
Tipo de usurio
Sesso Transao Consulta Configurao
Fbrica de Sesses
Camada de Persistncia
JNDI JDBC JTA
Hibernate API
J2EE API
Sesso Transao Consulta
Classes de
Persistncia
Interceptor
Tipo de usurio
Sesso Transao Consulta Configurao
Fbrica de Sesses
Camada de Persistncia
JNDI JDBC JTA
J2EE API
Hibernate API
Configurao
Utilizada para
configurar o Hibernate
Utilizada para
Utilizada para
configurar o Hibernate
configurar o Hibernate
Fbrica de Sesses
Mantm o mapeamento
objeto/relacional na
memria. Permite a
criao de objetos Sesso.
Mant
Mant
m o mapeamento
m o mapeamento
objeto/relacional na
objeto/relacional na
mem
mem
ria. Permite a
ria. Permite a
cria
cria
o de objetos Sess
o de objetos Sess
o.
o.
Responsveis por
executar operaes de
criao, deleo, consulta
e atualizao no BD
Respons
Respons
veis por
veis por
executar opera
executar opera
es de
es de
cria
cria
o,
o,
dele
dele
o
o
, consulta
, consulta
e atualiza
e atualiza
o no BD
o no BD
Arquitetura do Hibernate
Arquitetura do Hibernate
Camada de Negcio
Ciclo de Vida
Tabela de Validao
Arquitetura do Hibernate
Arquitetura do Hibernate
Responsveis por realizar
a interao entre os
eventos do Hibernate e a
aplicao.
Respons
Respons
o entre os
o entre os
eventos do Hibernate e a
eventos do Hibernate e a
aplica
aplica
o.
o.
Camada de Negcio
Ciclo de Vida
Tabela de Validao
Interceptor
Tipo de usurio
Sesso Transao Consulta Configurao
Fbrica de Sesses
Camada de Persistncia
JNDI JDBC JTA
Classes de
Persistncia
Tipo de usurio
Permite a extenso das
funcionalidades do
mapeamento do
Hibernate
Permite a extens
Permite a extens
o das
o das
funcionalidades do
funcionalidades do
mapeamento do
mapeamento do
Hibernate
Hibernate
Hibernate API
J2EE API
Arquitetura do Hibernate
Arquitetura do Hibernate
Camada de Negcio
Ciclo de Vida
Tabela de Validao
Interceptor
Tipo de usurio
Sesso Transao Consulta Configurao
Fbrica de Sesses
Camada de Persistncia
JNDI JDBC JTA
So aquelas classes que
implementam as
entidades domnio de
negcios.
S
S
nio de
nio de
neg
neg
cios.
cios.
Classes de
Persistncia
Classes de
Persistncia
Hibernate API
J2EE API
Arquitetura do Hibernate
Arquitetura do Hibernate
Classes de Persistncia
O Hibernate trabalha associando cada tabela do
banco de dados a um POJO.
O Hibernate persiste as propriedades no estilo
JavaBeans;
importante que, ao utilizar o Hibernate, todos
os objetos persistentes possuam um identificador
e que estes sejam independentes da lgica de
negcio da aplicao.
Arquitetura do Hibernate
Arquitetura do Hibernate
Escolhas das chaves primrias
Chaves primrias naturais, como por exemplo CPF
para a tabela Pessoa, devem ser evitadas.
Recomenda-se fortemente que as chaves primrias
das tabelas sejam sintticas, ou seja, no possuam
significados de negcios .
O Hibernate apresenta vrios mecanismos
internos para a gerao de chaves primrias.
Por exemplo, sequence que mapeia uma seqncia
no PostegreSQL.
Como a instalao do Hibernate?
Preparando o ambiente
Passo 1:
Instalao do SGBD PostegreSQL;
Passo 2:
Instalao da IDE Eclipse;
Passo 3:
Instalao do Hibernate;
Passo 4:
Configurao do Hibernate;
Passo 1:
Instalao do PostegreSQL
1. Entre no site www.postegresql.org
2. Clique em download FTP mirros Brazil
win32 postegresql-8.1.4-1.zip
3. Descompacte o arquivo baixado
4. Clique com o boto direito em postegre-8.1.msi e
escolha instalar
5. Siga o passo a passo
6. Escolha a opo de Idioma = Portugus
7. Escolha: superusurio = admin e senha = admin
Passo 2:
Instalao da IDE Eclipse
1. Considerando que j exista um ambiente para
programao em Java devidamente instalado;
2. Entre no site http://www.eclipse.org/
3. Clique em downloads download now:
Eclipse SDK 3.2
4. Escolha [Brazil] PUCPR (ftp)
5. Salvar o arquivo eclipse-SDK-3.2-win32.zip
6. Descompactar o arquivo eclipse-SDK-3.2-
win32.zip
Passo 3:
Instalao do Hibernate
1. Entre no site http://www.hibernate.org/
2. Clique em downloads Hibernate Core
Download hibernate-3.1.3.zip Curitiba,
Brazil Download
3. Descompacte o arquivo baixado (hibernate-
3.1.3.zip)
4. Observe que a documentao est localizada em
hibernate-3.1.3\hibernate-3.1\doc\reference\em\html\index.html
Passo 4:
Configurao do Hibernate
A configurao do Hibernate ser apresentada
atravs de um exemplo prtico.
Configurao do Hibernate
Exemplo
1. Criar o banco de dados Universidades com as 3 tabelas:
Universidade, Departamento e Endereo.
2. Configurar o Hibernate.
3. Criar os arquivos ORM que relacionam as propriedades do
objeto aos campos da tabela.
4. Criar os arquivos de configurao .xml contendo as
propriedades para que o Hibernate se conecte ao banco de
dados.
5. Testar o que foi feito.
Configurao do Hibernate
Exemplo
1. Criao do Banco de Dados
Banco de Dados - Universidades
Configurao do Hibernate
Exemplo
Configurao do Hibernate
Exemplo
Criando as seqncias usadas pelas chaves primrias
-- Sequence: universidade_id_universidade_seq
-- DROP SEQUENCE universidade_id_universidade_seq;
CREATE SEQUENCE universidade_id_universidade_seq
INCREMENT 1
MINVALUE 1
MAXVALUE 9223372036854775807
START 2
CACHE 1;
ALTER TABLE universidade_id_universidade_seq OWNER TO
"admin";
Configurao do Hibernate
Exemplo
Criando as seqncias usadas pelas chaves primrias
-- Sequence: universidade_id_universidade_seq
-- DROP SEQUENCE universidade_id_universidade_seq;
CREATE SEQUENCE universidade_id_universidade_seq
INCREMENT 1
MINVALUE 1
MAXVALUE 9223372036854775807
START 2
CACHE 1;
ALTER TABLE universidade_id_universidade_seq OWNER TO
"admin";
-- Sequence: departamento_id_departamento_seq
-- DROP SEQUENCE departamento_id_departamento_seq;
CREATE SEQUENCE departamento_id_departamento_seq
INCREMENT 1
MINVALUE 1
MAXVALUE 9223372036854775807
START 2
CACHE 1;
ALTER TABLE departamento_id_departamento_seq OWNER TO
"admin";
Configurao do Hibernate
Exemplo
Criando as seqncias usadas pelas chaves primrias
-- Sequence: universidade_id_universidade_seq
-- DROP SEQUENCE universidade_id_universidade_seq;
CREATE SEQUENCE universidade_id_universidade_seq
INCREMENT 1
MINVALUE 1
MAXVALUE 9223372036854775807
START 2
CACHE 1;
ALTER TABLE universidade_id_universidade_seq OWNER TO
"admin";
-- Sequence: departamento_id_departamento_seq
-- DROP SEQUENCE departamento_id_departamento_seq;
CREATE SEQUENCE departamento_id_departamento_seq
INCREMENT 1
MINVALUE 1
MAXVALUE 9223372036854775807
START 2
CACHE 1;
ALTER TABLE departamento_id_departamento_seq OWNER TO
"admin";
-- Sequence: endereco_id_endereco_seq
-- DROP SEQUENCE endereco_id_endereco_seq;
CREATE SEQUENCE endereco_id_endereco_seq
INCREMENT 1
MINVALUE 1
MAXVALUE 9223372036854775807
START 2
CACHE 1;
ALTER TABLE endereco_id_endereco_seq OWNER TO
"admin";
Criando as tabelas
Configurao do Hibernate
Exemplo
-- Table: universidade
-- DROP TABLE universidade;
CREATE TABLE universidade
(
id_universidade int4 NOT NULL DEFAULT
nextval('universidade_id_universidade_seq'::regclass),
cnpj varchar NOT NULL,
razao_social varchar,
tipo varchar,
num_alunos int4,
CONSTRAINT universidade_pkey PRIMARY KEY (id_universidade),
CONSTRAINT universidade_cnpj_key UNIQUE(cnpj)
)
WITH OIDS;
ALTER TABLE universidade OWNER TO "admin";
Criando as tabelas
Configurao do Hibernate
Exemplo
-- Table: universidade
-- DROP TABLE universidade;
CREATE TABLE universidade
(
id_universidade int4 NOT NULL DEFAULT
nextval('universidade_id_universidade_seq'::regclass),
cnpj varchar NOT NULL,
razao_social varchar,
tipo varchar,
num_alunos int4,
CONSTRAINT universidade_pkey PRIMARY KEY (id_universidade),
CONSTRAINT universidade_cnpj_key UNIQUE(cnpj)
)
WITH OIDS;
ALTER TABLE universidade OWNER TO "admin";
-- Table: endereco
-- DROP TABLE endereco;
CREATE TABLE endereco
(
id_endereco int4 NOT NULL DEFAULT
nextval('endereco_id_endereco_seq'::regclass),
rua varchar,
cep varchar,
CONSTRAINT endereco_pkey PRIMARY KEY (id_endereco)
)
WITH OIDS;
ALTER TABLE endereco OWNER TO "admin";
Criando as tabelas
Configurao do Hibernate
Exemplo
-- Table: universidade
-- DROP TABLE universidade;
CREATE TABLE universidade
(
id_universidade int4 NOT NULL DEFAULT
nextval('universidade_id_universidade_seq'::regclass),
cnpj varchar NOT NULL,
razao_social varchar,
tipo varchar,
num_alunos int4,
CONSTRAINT universidade_pkey PRIMARY KEY (id_universidade),
CONSTRAINT universidade_cnpj_key UNIQUE(cnpj)
)
WITH OIDS;
ALTER TABLE universidade OWNER TO "admin";
-- Table: endereco
-- DROP TABLE endereco;
CREATE TABLE endereco
(
id_endereco int4 NOT NULL DEFAULT
nextval('endereco_id_endereco_seq'::regclass),
rua varchar,
cep varchar,
CONSTRAINT endereco_pkey PRIMARY KEY (id_endereco)
)
WITH OIDS;
ALTER TABLE endereco OWNER TO "admin";
-- Table: departamento
-- DROP TABLE departamento;
CREATE TABLE departamento
(
id_departamento int4 NOT NULL DEFAULT
nextval('departamento_id_departamento_seq'::regclass),
nome varchar,
id_universidade int4 NOT NULL,
id_endereco int4,
CONSTRAINT departamento_pkey PRIMARY KEY (id_departamento),
CONSTRAINT departamento_fk FOREIGN KEY (id_universidade)
REFERENCES universidade (id_universidade) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT departamento_fk1 FOREIGN KEY (id_endereco)
REFERENCES endereco (id_endereco) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT departamento_id_endereco_key UNIQUE (id_endereco)
)
WITH OIDS;
ALTER TABLE departamento OWNER TO "admin";
Configurao do Hibernate
Exemplo
2. Configurar o Hibernate
Configurao do Ambiente
Configurao do Hibernate
Exemplo
Crie um diretrio de trabalho chamado workspace;
Crie um pacote chamado universidades. Escolha:
Add external JAR: importar os arquivos .jar de
hibernate-3.1.3\hibernate-3.1\lib
Add external JAR: importar hibernate3.jar de
hibernate-3.1.3\hibernate-3.1
Configurao do Ambiente
Configurao do Hibernate
Exemplo
Crie um pacote br.model.bean para os arquivos de
persistncia;
Crie um pacote br.testes.hibernate onde ficaro os
arquivos de teste;
Crie um pacote br.testes.hibernate.persistence onde
ficar o arquivo HibernateFactory.java;
Importe postgresql-8.2dev-503.jdbc3.jar, que deve
tambm ser baixado do site www.postegresql.org;
O arquivo Hibernate.cfg.xml dever ficar na raiz da
aplicao.
Configurao do Hibernate
Exemplo
3. Criao dos Arquivos ORM
Configurao do Hibernate
Exemplo
Arquivos ORM
Para cada tabela necessrio a criao dos
arquivos ORM;
O primeiro arquivo uma classe de persistncia
JAVA que deve ter:
Um construtor padro sem argumentos
Variveis para cada atributo da tabela. Cada uma
destas variveis deve possuir os mtodos get e set;
O segundo arquivo possui a extenso .hbm.xml, e
faz o mapeamento entre os atributos das tabelas e
as variveis das classes de persistncia JAVA;
Configurao do Hibernate
Exemplo
Arquivos ORM