Escolar Documentos
Profissional Documentos
Cultura Documentos
Apresentação Sobre Hibernate
Apresentação Sobre Hibernate
Por qu
qu precisamos
precisamos do
do Hibernate?
Hibernate?
Por
Trabalhamos com
Modelo Relacional
Universidade
1
Departamento
1
1
Endereo
Modelo Relacional
Universidade
1
N
Departamento
1
1
Endereo
O Hibernate um
mapeamento objeto/relacional .
Modelo Relacional
Universidade
1
N
Departamento
1
1
Endereo
Mas
Mas oo que
que ORM
ORM ??
(Mapeamento
(Mapeamento Objeto/Relacional)
Objeto/Relacional)
ORM
Arquitetura em camadas
de projetos OO
Camada de Apresentao
Camada de Regras de
Negcio
Hibernate
Camada de Persistncia
Banco de
Dados
Classes
de
Utilidade
e
Assistente
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 a Arquitetura do
Hibernate?
Arquitetura do Hibernate
Camada de Negcio
Classes de
Persistncia
Ciclo de Vida
Interceptor
Tipo de usurio
Tabela de Validao
Camada de Persistncia
Sesso
Fbrica de Sesses
Transao
JNDI
Hibernate API
JDBC
Configurao
Consulta
JTA
J2EE API
Arquitetura do Hibernate
Camada de Negcio
Classes de
Persistncia
Ciclo de Vida
Tabela de Validao
Camada de Persistncia
Sesso
Fbrica de Sesses
Transao
Responsveis
JNDI
Responsveispor
por
executar
executaroperaes
operaesde
de
criao,
Hibernate API
criao,deleo,
deleo,consulta
consulta
eeatualizao
atualizaono
noBD
BD
Mantm
Mantmoomapeamento
mapeamento
objeto/relacional
na
objeto/relacional
Interceptor na
memria.
memria.Permite
Permiteaa
criao
de
Sesso.
de usurio
criaoTipo
deobjetos
objetos
Sesso.
JDBC
Configurao
Consulta
JTA
Utilizada
Utilizadapara
para
J2EE API o Hibernate
configurar
configurar o Hibernate
Responsveis
Responsveispor
porrealizar
realizar
aainterao
interaoentre
entreosos
eventos
eventosdo
doHibernate
Hibernateeeaa
aplicao.
aplicao.
Arquitetura do Hibernate
Camada de Negcio
Classes de
Persistncia
Ciclo de Vida
Interceptor
Tipo de usurio
Tabela de Validao
Camada de Persistncia
Sesso
Transao
JNDI
Hibernate API
JDBC
Consulta
Permite
aade
extenso
Fbrica
Sesses
Permite
extens
odas
das
funcionalidades
funcionalidadesdo
do
Configurao
mapeamento
mapeamentodo
do
Hibernate
Hibernate
JTA
J2EE API
Arquitetura do Hibernate
Camada de Negcio
Classes de
Persistncia
Ciclo de Vida
Tabela de Validao
Interceptor
Tipo de usurio
Camada de Persistncia
Sesso
JNDI
Fbrica de Sesses
So
Soaquelas
aquelasclasses
classesque
que
implementam
asas
Configurao
Transao implementam
Consulta
entidades
entidadesdomnio
domniode
de
negcios.
JDBCnegcios.
JTA
Hibernate API
J2EE API
Arquitetura do Hibernate
Classes de Persistncia
Arquitetura 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.
2.
3.
4.
5.
6.
7.
Passo 2:
Passo 3:
Instalao do Hibernate
1.
2.
3.
4.
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.
2.
3.
4.
5.
Configurao do Hibernate
Exemplo
Configurao do Hibernate
Exemplo
Configurao do Hibernate
Exemplo
Configurao do Hibernate
Exemplo
Configurao do Hibernate
Exemplo
TO
Configurao do Hibernate
Exemplo
Criando as tabelas
-- 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";
Configurao do Hibernate
Exemplo
Criando as tabelas
-- 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),
-- Table: endereco
CONSTRAINT universidade_cnpj_key UNIQUE(cnpj)
-- DROP TABLE endereco;
)
CREATE TABLE endereco
WITH OIDS;
(
ALTER TABLE universidade OWNER TO "admin";
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";
Configurao do Hibernate
Exemplo
Criando as tabelas
-- Table: universidade
-- DROP--TABLE
universidade;
Table:
departamento
CREATE -TABLE
DROPuniversidade
TABLE departamento;
(
CREATE TABLE departamento
id_universidade
int4 NOT NULL DEFAULT
(
nextval('universidade_id_universidade_seq'::regclass),
id_departamento int4 NOT NULL DEFAULT
cnpj nextval('departamento_id_departamento_seq'::regclass),
varchar NOT NULL,
razao_social
varchar,
nome varchar,
tipo varchar,
id_universidade int4 NOT NULL,
num_alunos
int4,
id_endereco
int4,
CONSTRAINT
universidade_pkey
PRIMARYPRIMARY
KEY (id_universidade),
CONSTRAINT
departamento_pkey
KEY (id_departamento),
-- Table: endereco
CONSTRAINT
universidade_cnpj_key
UNIQUE(cnpj)
CONSTRAINT
departamento_fk
FOREIGN KEY (id_universidade)
-- DROP TABLE endereco;
)
REFERENCES
universidade
(id_universidade) MATCH SIMPLE
CREATE
TABLE endereco
WITH OIDS;
ON UPDATE( NO ACTION ON DELETE NO ACTION,
ALTER TABLE
universidade
OWNER TO "admin";
CONSTRAINT
departamento_fk1
FOREIGN
KEY (id_endereco)
id_endereco int4
NOT NULL
DEFAULT
REFERENCES
endereco
(id_endereco)
MATCH
SIMPLE
nextval('endereco_id_endereco_seq'::regclass),
ON UPDATE NO
ON DELETE NO ACTION,
ruaACTION
varchar,
CONSTRAINT departamento_id_endereco_key
UNIQUE (id_endereco)
cep varchar,
)
CONSTRAINT endereco_pkey PRIMARY KEY (id_endereco)
WITH OIDS;
)
ALTER TABLE departamento
WITH OIDS; OWNER TO "admin";
ALTER TABLE endereco OWNER TO "admin";
Configurao do Hibernate
Exemplo
2. Configurar o Hibernate
Configurao do Hibernate
Exemplo
Configurao do Ambiente
Configurao do Hibernate
Exemplo
Configurao do Ambiente
Configurao do Hibernate
Exemplo
Configurao do Hibernate
Exemplo
Arquivos ORM
Configurao do Hibernate
Exemplo
Arquivos ORM
......
/**
/**
** OO mapeamento
mapeamento exige
exige que
que para
para cada
cada campo
campo da
da tabela
tabela seja
seja criada
criada
** uma
variavel
do
tipo
correspondente
uma variavel do tipo correspondente
*/
*/
private
private int
int id_universidade;
id_universidade;
private
String
private String cnpj;
cnpj;
private
String
razao_social;
private String razao_social;
private
private String
String tipo;
tipo;
private
int
num_alunos;
private int num_alunos;
}}
/**
/** OO mapeamento
mapeamento exige
exige que
que para
para cada
cada variavel
variavel existam
existam os
os
** metodos
get
e
set
metodos get e set
*/
*/
public
public String
String getCnpj()
getCnpj() {{
return
}}
return cnpj;
cnpj;
public
public void
void setCnpj(String
setCnpj(String cnpj)
cnpj) {{
this.cnpj
this.cnpj == cnpj;
cnpj;}}
public
public int
int getId_universidade()
getId_universidade() {{
return
return id_universidade;
id_universidade; }}
public
public void
void setId_universidade(int
setId_universidade(int id_universidade)
id_universidade) {{
this.id_universidade
}}
this.id_universidade == id_universidade;
id_universidade;
public
public String
String getRazao_social()
getRazao_social() {{
return
}}
return razao_social;
razao_social;
public
public void
void setRazao_social(String
setRazao_social(String razao_social)
razao_social) {{
this.razao_social
this.razao_social == razao_social;
razao_social; }}
public
public String
String getTipo()
getTipo() {{
return
}}
return tipo;
tipo;
public
public void
void setTipo(String
setTipo(String tipo)
tipo) {{
this.tipo
this.tipo == tipo;
tipo;}}
public
public int
int getNum_alunos()
getNum_alunos() {{
return
}}
return num_alunos;
num_alunos;
public
public void
void setNum_alunos(int
setNum_alunos(int num_alunos)
num_alunos) {{
this.num_alunos
}}
this.num_alunos == num_alunos;
num_alunos;
Nome da
tabela
da classe
<hibernate-mapping>
<hibernate-mapping>
<class
<class name="br.model.bean.Universidade"
name="br.model.bean.Universidade" table="universidade">
table="universidade">
Descrio
dos atributos
da Tabela
<id
<id name="id_universidade"
name="id_universidade"
Seqncia
column="id_universidade"
column="id_universidade"
criada pelo
type="integer">
PostgreSQL
type="integer">
<generator
class="sequence">
<generator class="sequence">
<param
<param name="sequence">universidade_id_universidade_seq</param>
name="sequence">universidade_id_universidade_seq</param>
</generator>
</generator>
</id>
</id>
<property
<property name="cnpj"
name="cnpj" type="string"/>
type="string"/>
<property
name="razao_social"
<property name="razao_social" column="razao_social"
column="razao_social" type="string"/>
type="string"/>
<property
name="tipo"
type="string"/>
<property name="tipo" type="string"/>
<property
<property name="num_alunos"
name="num_alunos" column="num_alunos"
column="num_alunos" type="integer"/>
type="integer"/>
</class>
</class>
</hibernate-mapping>
</hibernate-mapping>
Nome da varivel
na classe Java
Nome dos
atributos na
tabela
Tipo do
dado
package
package br.model.bean;
br.model.bean;
Departamento.java
import
import br.model.bean.Universidade;
br.model.bean.Universidade;
import
br.model.bean.Endereco;
import br.model.bean.Endereco;
/**
/**
** Classe
Classe Departamento
Departamento -- Parte
Parte integrante
integrante do
do esquema
esquema necessario
necessario para
para aa
** utilizacao
utilizacao do
do Hibernate
Hibernate
** Junto
com
departamento.hbm.xml
Junto com departamento.hbm.xml faz
faz oo mapeamento
mapeamento da
da tabela
tabela departamento
departamento
*/
*/
public
public class
class Departamento
Departamento {{
/**
/**
** OO mapeamento
mapeamento exige
exige que
que para
para cada
cada campo
campo da
da tabela
tabela seja
seja criada
criada uma
uma
** variavel
do
tipo
correspondente
variavel do tipo correspondente
*/
*/
private
private int
int id_departamento;
id_departamento;
private
String
private String nome;
nome;
/**
O
mapeamento
/** O mapeamento exige
exige que
que para
para cada
cada variavel
variavel existam
existam os
os metodos
metodos get
get ee
** set
set
*/
*/
public
public int
int getId_departamento()
getId_departamento() {{
return
return id_departamento;
id_departamento; }}
public
public void
void setId_departamento(int
setId_departamento(int id_departamento)
id_departamento) {{
this.id_departamento
}}
this.id_departamento == id_departamento;
id_departamento;
public
public String
String getNome()
getNome() {{
return
}}
return nome;
nome;
public
public void
void setNome(String
setNome(String nome)
nome) {{
this.nome
}}
this.nome == nome;
nome;
}}
}}
/**
/**
** OO mapeamento
mapeamento exige
exige que
que para
para cada
cada variavel
variavel existam
existam os
os metodos
metodos get
get
** ee set
set
*/
*/
public
public int
int getId_endereco(){
getId_endereco(){
return
}}
return id_endereco;
id_endereco;
public
public void
void setId_endereco(int
setId_endereco(int id_endereco){
id_endereco){
this.id_endereco
=
id_endereco;
}}
this.id_endereco = id_endereco;
public
public String
String getRua(){
getRua(){
return
}}
return rua;
rua;
public
public void
void setRua(String
setRua(String rua){
rua){
this.rua
=
rua;
}
this.rua = rua; }
public
String
public String getCep(){
getCep(){
return
}}
return cep;
cep;
public
public void
void setCep(String
setCep(String cep){
cep){
this.cep
=
cep;
}
this.cep = cep; }
Configurao do Hibernate
Exemplo
Arquivos ORM
...
...
...
...
/**
/**
** OO mapeamento
mapeamento exige
exige que
que para
para cada
cada variavel
variavel existam
existam os
os metodos
metodos
** get
e
set
get e set
*/
*/
/**
/**
** OO mapeamento
mapeamento do
do relacionamento
relacionamento <1-para-N>
<1-para-N> com
com aa tabela
tabela
** departamento
feito
atraves
do
conjunto
de
departamentos
departamento feito atraves do conjunto de departamentos
*/
*/
public
public Set
Set getDepartamentos(){
getDepartamentos(){
return
}}
return departamentos;
departamentos;
public
public void
void setDepartamentos(Set
setDepartamentos(Set departamentos){
departamentos){
this.departamentos
=
departamentos;
}}
this.departamentos = departamentos;
public
public void
void addDepartamentos(Departamento
addDepartamentos(Departamento departamento){
departamento){
departamento.setId_universidade(this);
departamento.setId_universidade(this);
departamentos.add(departamento);
departamentos.add(departamento); }}
}}
<?xml
<?xml version="1.0"?>
version="1.0"?>
<!DOCTYPE
<!DOCTYPE hibernate-mapping
hibernate-mapping PUBLIC
PUBLIC
"-//Hibernate/Hibernate
Mapping
"-//Hibernate/Hibernate Mapping DTD
DTD 3.0//EN"
3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<hibernate-mapping>
<class
<class name="br.model.bean.Universidade"
name="br.model.bean.Universidade" table="universidade">
table="universidade">
O nome da coluna
da chave
estrangeira na
classe Universidade
<!-<!-- Mapeamento
Mapeamento da
da Colecao
Colecao de
de Departamentos
Departamentos -->
-->
<set
name="departamentos"
inverse="true"
lazy="true">
<set name="departamentos" inverse="true" lazy="true">
<key
<key column="id_universidade"
column="id_universidade" />
/>
<one-to-many
class="br.model.bean.Departamento"/>
<one-to-many class="br.model.bean.Departamento"/>
</set>
</set>
</class>
</class>
</hibernate-mapping>
</hibernate-mapping>
Informa a classe a
qual pertence a
coleo de objetos
package
package br.model.bean;
br.model.bean;
import
import br.model.bean.Universidade;
br.model.bean.Universidade;
import
br.model.bean.Endereco;
import br.model.bean.Endereco;
/**
/**
** Classe
Classe Departamento
Departamento -- Parte
Parte integrante
integrante do
do esquema
esquema necessario
necessario para
para aa
** utilizacao
utilizacao do
do Hibernate
Hibernate
** Junto
com
departamento.hbm.xml
Junto com departamento.hbm.xml faz
faz oo mapeamento
mapeamento da
da tabela
tabela departamento
departamento
*/
*/
public
public class
class Departamento
Departamento {{
/**
/**
** OO mapeamento
mapeamento exige
exige que
que para
para cada
cada campo
campo da
da tabela
tabela seja
seja criada
criada uma
uma
** variavel
do
tipo
correspondente
variavel do tipo correspondente
*/
*/
private
private int
int id_departamento;
id_departamento;
private
String
private String nome;
nome;
public
Universidade
public Universidade id_universidade;
id_universidade;
//
mapeia
// mapeia oo relacionamento
relacionamento com
com aa tabela
tabela universidade
universidade
public
Endereco
id_endereco;
public Endereco id_endereco;
//
// mapeia
mapeia oo relacionamento
relacionamento com
com aa tabela
tabela endereco
endereco
/*
/* OO mapeamento
mapeamento exige
exige que
que para
para cada
cada variavel
variavel existam
existam os
os metodos
metodos get
get ee
** set
set
*/
*/
...
...
atributo na
classe Java
No aceita
valores repetidos
package
package br.model.bean;
br.model.bean;
/**
/**
** Classe
Classe Endereco
Endereco -- Parte
Parte integrante
integrante do
do esquema
esquema necessario
necessario para
para aa
** utilizacao
utilizacao do
do Hibernate
Hibernate
** Junto
com
endereco.hbm.xml
Junto com endereco.hbm.xml faz
faz oo mapeamento
mapeamento da
da tabela
tabela endereco
endereco
*/
*/
public
public class
class Endereco
Endereco {{
/**
/**
** OO mapeamento
mapeamento exige
exige que
que para
para cada
cada campo
campo da
da tabela
tabela seja
seja criada
criada uma
uma
** variavel
do
tipo
correspondente
variavel do tipo correspondente
*/
*/
private
private int
int id_endereco;
id_endereco;
private
String
private String rua;
rua;
private
String
cep;
private String cep;
...
...
...
...
}}
/**
/**
** OO mapeamento
mapeamento exige
exige que
que para
para cada
cada variavel
variavel existam
existam os
os metodos
metodos get
get
** ee set
set
*/
*/
public
public int
int getId_endereco(){
getId_endereco(){
return
}}
return id_endereco;
id_endereco;
public
public void
void setId_endereco(int
setId_endereco(int id_endereco){
id_endereco){
this.id_endereco
=
id_endereco;
}}
this.id_endereco = id_endereco;
public
public String
String getRua(){
getRua(){
return
}}
return rua;
rua;
public
public void
void setRua(String
setRua(String rua){
rua){
this.rua
=
rua;
}
this.rua = rua; }
public
String
public String getCep(){
getCep(){
return
}}
return cep;
cep;
public
public void
void setCep(String
setCep(String cep){
cep){
this.cep
=
cep;
}
this.cep = cep; }
OOmapeamento
mapeamentodo
do
relacionamento
(1:1)
relacionamento (1:1)com
comaa
tabela
Departamento
aparece
tabela Departamento aparece
apenas
apenaspara
paraaatabela
tabelaque
quecarrega
carrega
aachave
estrangeira.
chave estrangeira.
Configurao do Hibernate
Exemplo
4. Arquivos de Configurao
Configurao
Hibernate.cfg.xml
<?xml
<?xml version='1.0'
version='1.0' encoding='utf-8'?>
encoding='utf-8'?>
<!DOCTYPE
hibernate-configuration
<!DOCTYPE hibernate-configuration PUBLIC
PUBLIC
"-//Hibernate/Hibernate
Configuration
"-//Hibernate/Hibernate Configuration DTD//EN"
DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<hibernate-configuration>
URL de
conexo
especfica
do BD
Dialeto SQL
especfico do
BD utilizado
<session-factory>
<session-factory>
<property
<property name="hibernate.dialect">
name="hibernate.dialect">
org.hibernate.dialect.PostgreSQLDialect</property>
org.hibernate.dialect.PostgreSQLDialect</property>
<property
<property name="connection.driver_class">
name="connection.driver_class">
Nome da classe do
org.postgresql.Driver</property>
org.postgresql.Driver</property>
driver JDBC do BD
<property
<property name="connection.url">
name="connection.url">
jdbc:postgresql://localhost:5432/universidades</property>
jdbc:postgresql://localhost:5432/universidades</property>
<property
<property name="connection.username">admin</property>
name="connection.username">admin</property>
<property
name="connection.password">admin</property>
<property name="connection.password">admin</property>
<property
<property name="show_sql">true</property>
name="show_sql">true</property>
Define se os
SQLs gerados
pelo Hibernate
devem ou no
ser exibidos
<mapping
<mapping resource="br/model/bean/universidade.hbm.xml"/>
resource="br/model/bean/universidade.hbm.xml"/>
<mapping
resource="br/model/bean/departamento.hbm.xml"/>
<mapping resource="br/model/bean/departamento.hbm.xml"/>
<mapping
<mapping resource="br/model/bean/endereco.hbm.xml"/>
resource="br/model/bean/endereco.hbm.xml"/>
<mapping
resource="br/model/bean/consultas.hbm.xml"/>
<mapping resource="br/model/bean/consultas.hbm.xml"/>
</session-factory>
</session-factory>
</hibernate-configuration>
</hibernate-configuration>
Nome de
usurio e senha
com o qual o
Hibernate deve
se comunicar
com o BD
Arquivos de
mapeamento
Configurao
HibernateFactory.java
package
package br.testes.hibernate.persistence;
br.testes.hibernate.persistence;
import
import org.hibernate.*;
org.hibernate.*;
import
org.hibernate.cfg.*;
import org.hibernate.cfg.*;
public
public class
class HibernateFactory
HibernateFactory {{
private
private static
static HibernateFactory
HibernateFactory factory;
factory;
private
static
Exception
exception;
private static Exception exception;
private
private SessionFactory
SessionFactory sessionFactory;
sessionFactory;
private
Session
session;
private Session session;
static
static {{
try
try {{
factory
factory == new
new HibernateFactory();
HibernateFactory();
}} catch(
Exception
catch( Exception ee )) {{
exception
exception == e;
e;
}}
}}
public
public HibernateFactory()
HibernateFactory() throws
throws Exception
Exception {{
setSessionFactory(
setSessionFactory( new
new
Configuration().configure().buildSessionFactory()
Configuration().configure().buildSessionFactory() );
);
setSession(
getSessionFactory().openSession()
setSession( getSessionFactory().openSession() );
);
}}
...
...
Configurao
HibernateFactory.java
...
...
public
public static
static HibernateFactory
HibernateFactory getInstance()
getInstance() throws
throws Exception
Exception {{
if(
if( factory
factory !=
!= null
null )) {{
return
return factory;
factory;
}} else
{
else {
Exception
Exception ee == new
new Exception(
Exception( exception
exception );
);
//"Error
initializing
hibernate.cfg.xml");
//"Error initializing hibernate.cfg.xml");
throw
throw e;
e;
}}
}}
}}
public
public SessionFactory
SessionFactory getSessionFactory()
getSessionFactory() {{
return
return sessionFactory;
sessionFactory;
}}
public
public void
void setSessionFactory(SessionFactory
setSessionFactory(SessionFactory sessionFactory)
sessionFactory) {{
this.sessionFactory
this.sessionFactory == sessionFactory;
sessionFactory;
}}
public
public Session
Session getSession()
getSession() {{
return
return session;
session;
}}
public
public void
void setSession(Session
setSession(Session session)
session) {{
this.session
this.session == session;
session;
}}
Configurao do Hibernate
Exemplo
4. Testes
Insero
UniversidadeTeste.java
package
package br.testes.hibernate;
br.testes.hibernate;
import
org.hibernate.Session;
import org.hibernate.Session;
import
import br.model.bean.Universidade;
br.model.bean.Universidade;
import
br.testes.hibernate.persistence.HibernateFactory;
import br.testes.hibernate.persistence.HibernateFactory;
import
import org.hibernate.Transaction;
org.hibernate.Transaction;
/**
/**
** Classe
Classe UniversidadeTeste
UniversidadeTeste -- Utiliza
Utiliza oo Hibernate
Hibernate para
para persistir
persistir dados
dados na
na tabela
tabela
** universidade
universidade
*/
*/
public
public class
class UniversidadeTeste
UniversidadeTeste {{
public
public void
void saveUniversidade(
saveUniversidade( String
String umCnpj,
umCnpj, String
String umaRazao_social,
umaRazao_social,
String
umTipo,
int
umNum_alunos)
String umTipo, int umNum_alunos) {{
try
try {{
Session
Session session
session == HibernateFactory.getInstance().getSession();
HibernateFactory.getInstance().getSession();
Transaction
tx
=
session.beginTransaction();
Transaction tx = session.beginTransaction();
Universidade
Universidade universidade
universidade == new
new Universidade();
Universidade();
universidade.setCnpj(umCnpj);
universidade.setCnpj(umCnpj);
universidade.setRazao_social(umaRazao_social);
universidade.setRazao_social(umaRazao_social);
universidade.setTipo(umTipo);
universidade.setTipo(umTipo);
universidade.setNum_alunos(umNum_alunos);
universidade.setNum_alunos(umNum_alunos);
session.save(
session.save( universidade
universidade );
);
tx.commit();
tx.commit();
}}
}}
}} catch
catch (Exception
(Exception e)
e) {{ System.out.println(
System.out.println( ee );
); }}
Insero
DepartamentoTeste.java
package
package br.testes.hibernate;
br.testes.hibernate;
import
org.hibernate.Session;
import org.hibernate.Session;
import
import br.model.bean.Universidade;
br.model.bean.Universidade;
import
br.model.bean.Departamento;
import br.model.bean.Departamento;
import
import br.model.bean.Endereco;
br.model.bean.Endereco;
import
br.testes.hibernate.persistence.HibernateFactory;
import br.testes.hibernate.persistence.HibernateFactory;
import
import org.hibernate.Transaction;
org.hibernate.Transaction;
/**
/**
** Classe
Classe DepartamentoTeste
DepartamentoTeste -- Utiliza
Utiliza oo Hibernate
Hibernate para
para persistir
persistir dados
dados na
na tabela
tabela
** departamento
departamento
*/
*/
public
public class
class DepartamentoTeste
DepartamentoTeste {{
public
public void
void saveDepartamento(
saveDepartamento( String
String umNome,
umNome, Universidade
Universidade umaUniversidade,
umaUniversidade,
Endereco
umEndereco)
{
Endereco umEndereco) {
try
{
try {
Session
Session session
session == HibernateFactory.getInstance().getSession();
HibernateFactory.getInstance().getSession();
Transaction
tx
=
session.beginTransaction();
Transaction tx = session.beginTransaction();
Departamento
Departamento departamento
departamento == new
new Departamento();
Departamento();
departamento.setNome(umNome);
departamento.setNome(umNome);
departamento.setId_universidade(umaUniversidade);
departamento.setId_universidade(umaUniversidade);
departamento.setId_endereco(umEndereco);
departamento.setId_endereco(umEndereco);
session.save(
session.save( departamento
departamento );
);
tx.commit();
tx.commit();
}} catch
catch (Exception
(Exception e)
e) {{ System.out.println(
System.out.println( ee );
); }}
}}
}}
Insero
EnderecoTeste.java
package
package br.testes.hibernate;
br.testes.hibernate;
import
org.hibernate.Session;
import org.hibernate.Session;
import
import br.model.bean.Endereco;
br.model.bean.Endereco;
import
br.testes.hibernate.persistence.HibernateFactory;
import br.testes.hibernate.persistence.HibernateFactory;
import
import org.hibernate.Transaction;
org.hibernate.Transaction;
/**
/**
** Classe
Classe EnderecoTeste
EnderecoTeste -- Utiliza
Utiliza oo Hibernate
Hibernate para
para persistir
persistir dados
dados na
na tabela
tabela
** endereco
endereco
*/
*/
public
public class
class EnderecoTeste
EnderecoTeste {{
public
public void
void saveEndereco(
saveEndereco( String
String umaRua,
umaRua, String
String umCep)
umCep) {{
try
try {{
Session
Session session
session == HibernateFactory.getInstance().getSession();
HibernateFactory.getInstance().getSession();
Transaction
tx
=
session.beginTransaction();
Transaction tx = session.beginTransaction();
Endereco
Endereco endereco
endereco == new
new Endereco();
Endereco();
endereco.setRua(umaRua);
endereco.setRua(umaRua);
endereco.setCep(umCep);
endereco.setCep(umCep);
session.save(
session.save( endereco
endereco );
);
tx.commit();
tx.commit();
}} catch
catch (Exception
(Exception e)
e) {{ System.out.println(
System.out.println( ee );
); }}
}
}}
}}
Teste de Insero
Insert.java
package
package br.testes.hibernate;
br.testes.hibernate;
import
br.model.bean.Universidade;
import br.model.bean.Universidade;
import
import br.model.bean.Departamento;
br.model.bean.Departamento;
import
br.model.bean.Endereco;
import br.model.bean.Endereco;
/**
/**
** Classe
Classe Insert
Insert -- Utiliza
Utiliza oo Hibernate
Hibernate para
para persistir
persistir dados
dados nas
nas tabelas
tabelas do
do
** banco
universidades
banco universidades
*/
*/
public
public class
class Insert
Insert {{
public
public static
static void
void main(String[]
main(String[] args)
args) throws
throws Exception
Exception {{
Universidade
Universidade universidade
universidade == new
new Universidade();
Universidade();
universidade.setId_universidade(2);
universidade.setId_universidade(2);
Endereco
Endereco endereco
endereco == new
new Endereco();
Endereco();
endereco.setId_endereco(3);
endereco.setId_endereco(3);
//UniversidadeTeste
//UniversidadeTeste teste1
teste1 == new
new UniversidadeTeste();
UniversidadeTeste();
//teste1.saveUniversidade("1234",
"UFRJ",
//teste1.saveUniversidade("1234", "UFRJ", "publica",
"publica", 30000);
30000);
//UniversidadeTeste
//UniversidadeTeste teste6
teste6 == new
new UniversidadeTeste();
UniversidadeTeste();
//teste6.saveUniversidade("4321",
"UERJ",
//teste6.saveUniversidade("4321", "UERJ", "publica",
"publica", 20000);
20000);
...
...
Teste de Insero
Insert.java
...
...
//UniversidadeTeste
//UniversidadeTeste teste7
teste7 == new
new UniversidadeTeste();
UniversidadeTeste();
//teste7.saveUniversidade("111",
"PUC
//teste7.saveUniversidade("111", "PUC Rio",
Rio", "privada",
"privada", 15000);
15000);
//EnderecoTeste
//EnderecoTeste teste3
teste3 == new
new EnderecoTeste();
EnderecoTeste();
//teste3.saveEndereco("Rua
A",
//teste3.saveEndereco("Rua A", "22.290-000");
"22.290-000");
//EnderecoTeste
//EnderecoTeste teste4
teste4 == new
new EnderecoTeste();
EnderecoTeste();
//teste4.saveEndereco("Rua
B",
//teste4.saveEndereco("Rua B", "22.290-000");
"22.290-000");
//DepartamentoTeste
//DepartamentoTeste teste2
teste2 == new
new DepartamentoTeste();
DepartamentoTeste();
//teste2.saveDepartamento("DCC",
universidade,
//teste2.saveDepartamento("DCC", universidade, endereco);
endereco);
DepartamentoTeste
DepartamentoTeste teste5
teste5 == new
new DepartamentoTeste();
DepartamentoTeste();
teste5.saveDepartamento("MAT",
universidade,
teste5.saveDepartamento("MAT", universidade, endereco);
endereco);
}}
}}
Teste de Seleo
consultas.hbm.xml
<?xml
<?xml version="1.0"?>
version="1.0"?>
<!DOCTYPE
<!DOCTYPE hibernate-mapping
hibernate-mapping PUBLIC
PUBLIC
"-//Hibernate/Hibernate
Mapping
"-//Hibernate/Hibernate Mapping DTD
DTD 3.0//EN"
3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<hibernate-mapping>
<!-<!-- Recupera
Recupera todos
todos as
as Universidades
Universidades -->
-->
<query
name="Universidades">
<query name="Universidades">
<![CDATA[from
<![CDATA[from Universidade
Universidade uni
uni
order
by
uni.razao_social]]>
order by uni.razao_social]]>
</query>
</query>
<!-<!-- Recupera
Recupera oo nome
nome da
da Universidade
Universidade dado
dado seu
seu cnpj
cnpj -->
-->
<query
name="UniversidadePorCnpj">
<query name="UniversidadePorCnpj">
<![CDATA[from
<![CDATA[from Universidade
Universidade uni
uni
where
uni.cnpj
=
:cnpj]]>
where uni.cnpj = :cnpj]]>
</query>
</query>
...
...
Teste de Seleo
consultas.hbm.xml
...
...
<!-<!-- Recupera
Recupera os
os departamentos
departamentos de
de uma
uma Universidade
Universidade dado
dado seu
seu cnpj
cnpj -->
-->
<query
name="DepartamentosPorCnpj">
<query name="DepartamentosPorCnpj">
<![CDATA[from
<![CDATA[from Departamento
Departamento dep,
dep, Universidade
Universidade uni
uni
where
dep.id_universidade
=
uni.id_universidade
where dep.id_universidade = uni.id_universidade
and
and uni.cnpj
uni.cnpj == :cnpj
:cnpj
order
by
dep.nome]]>
order by dep.nome]]>
</query>
</query>
<!-<!-- Recupera
Recupera oo endereco
endereco de
de um
um departamentos
departamentos dado
dado seu
seu nome
nome ee oo cnpj
cnpj da
da
universidade
ao
qual
pertence
-->
universidade ao qual pertence -->
<query
<query name="EnderecoPorDepartamentoECnpj">
name="EnderecoPorDepartamentoECnpj">
<![CDATA[from
<![CDATA[from Endereco
Endereco endereco,
endereco, Departamento
Departamento dep,
dep, Universidade
Universidade uni
uni
where
endereco.id_endereco
=
dep.id_endereco
where endereco.id_endereco = dep.id_endereco
and
and dep.id_universidade
dep.id_universidade == uni.id_universidade
uni.id_universidade
and
uni.cnpj
=
:cnpj
and uni.cnpj = :cnpj
and
and dep.nome
dep.nome == :nome]]>
:nome]]>
</query>
</query>
</hibernate-mapping>
</hibernate-mapping>
Teste de Seleo
Select.java
package
package br.testes.hibernate;
br.testes.hibernate;
import
import org.hibernate.Session;
org.hibernate.Session;
import
br.testes.hibernate.persistence.*;
import br.testes.hibernate.persistence.*;
import
import br.model.bean.Universidade;
br.model.bean.Universidade;
import
br.model.bean.Departamento;
import br.model.bean.Departamento;
import
import br.model.bean.Endereco;
br.model.bean.Endereco;
import
java.util.List;
import java.util.List;
import
import java.util.ArrayList;
java.util.ArrayList;
import
java.util.Iterator;
import java.util.Iterator;
/**
/**
** Classe
Classe Select
Select -- Utiliza
Utiliza oo Hibernate
Hibernate para
para selecionar
selecionar dados
dados nas
nas tabelas
tabelas do
do
** banco
universidades
chamando
as
consultas
nomeadas
no
arquivo
banco universidades chamando as consultas nomeadas no arquivo
** Consultas.hbm.xml
Consultas.hbm.xml
*/
*/
public
public class
class Select
Select {{
public
public static
static void
void main(String[]
main(String[] args)
args) {{
try
try {{
Session
Session session
session == HibernateFactory.getInstance().getSession();
HibernateFactory.getInstance().getSession();
...
...
}}
/*
/* Consultas
Consultas Nomeadas
Nomeadas */
*/
}} catch
catch (Exception
(Exception e)
e) {{ System.out.println(e);
System.out.println(e); }}
Teste de Seleo
Select.java
...
...
...
...
/*
/* Selecione
Selecione todas
todas as
as Universidades
Universidades ordenadas
ordenadas
em
ordem
alfabtica
de
sua
razo
social*/
em ordem alfabtica de sua razo social*/
org.hibernate.Query
org.hibernate.Query query
query == session.getNamedQuery("Universidades");
session.getNamedQuery("Universidades");
List
result
=
query.list();
List result = query.list();
ArrayList
ArrayList lista
lista == new
new ArrayList();
ArrayList();
Iterator
it
=
result.iterator();
Iterator it = result.iterator();
while(
while( it.hasNext()
it.hasNext() )) {{
Universidade
Universidade uni
uni == (Universidade)
(Universidade) it.next();
it.next();
lista.add(uni);
lista.add(uni);
System.out.println(
System.out.println( "universidade:
"universidade: "" ++ uni.getRazao_social());
uni.getRazao_social());
}}
/*
/* Selecione
Selecione aa razo
razo social
social da
da Universidade
Universidade cujo
cujo cnoj
cnoj == 1234*/
1234*/
org.hibernate.Query
query
=
org.hibernate.Query query =
session.getNamedQuery("UniversidadePorCnpj").setString("cnpj",
session.getNamedQuery("UniversidadePorCnpj").setString("cnpj", "1234");
"1234");
List
result
=
query.list();
List result = query.list();
ArrayList
ArrayList lista
lista == new
new ArrayList();
ArrayList();
Iterator
it
=
result.iterator();
Iterator it = result.iterator();
while(
while( it.hasNext()
it.hasNext() )) {{
Universidade
Universidade uni
uni == (Universidade)
(Universidade) it.next();
it.next();
lista.add(uni);
lista.add(uni);
System.out.println(
System.out.println( "universidade:
"universidade: "" ++ uni.getRazao_social());
uni.getRazao_social());
}}
...
...
Teste de Seleo
/*
/* Selecione
Selecione oo nome
nome dos
dos departamentos
departamentos da
da universidade
universidade cujo
cujo cnpj
cnpj == 1234*/
1234*/
org.hibernate.Query
query
=
org.hibernate.Query query =
session.getNamedQuery("DepartamentosPorCnpj").setString("cnpj","1234");
session.getNamedQuery("DepartamentosPorCnpj").setString("cnpj","1234");
Iterator
Iterator pairs
pairs == query.list().iterator();
query.list().iterator();
while(
pairs.hasNext()
while( pairs.hasNext() )) {{
Object[]
Object[] pair
pair == (Object[])
(Object[]) pairs.next();
pairs.next();
Departamento
dep
=
(Departamento)
Departamento dep = (Departamento) pair[0];
pair[0];
Universidade
uni
=
(Universidade)
pair[1];
Universidade uni = (Universidade) pair[1];
System.out.println(
System.out.println( "Universidade:
"Universidade: "" ++ uni.getRazao_social());
uni.getRazao_social());
System.out.println(
"Departamento:
"
+
dep.getNome());
System.out.println( "Departamento: " + dep.getNome());
}}
Select.java
...
...
/*
/* Selecione
Selecione oo endereco
endereco do
do departamentos
departamentos cujo
cujo nome
nome == DCC
DCC ee oo cnpj
cnpj da
da
universidade
ao
qual
pertence
=
1234
*/
universidade ao qual pertence = 1234 */
org.hibernate.Query
org.hibernate.Query query
query ==
session.getNamedQuery("EnderecoPorDepartamentoECnpj").setString("nome",
session.getNamedQuery("EnderecoPorDepartamentoECnpj").setString("nome",
"DCC").setString("cnpj","1234");
"DCC").setString("cnpj","1234");
Iterator
pairs
=
query.list().iterator();
Iterator pairs = query.list().iterator();
while(
while( pairs.hasNext()
pairs.hasNext() )) {{
Object[]
Object[] pair
pair == (Object[])
(Object[]) pairs.next();
pairs.next();
Endereco
endereco
=
(Endereco)
Endereco endereco = (Endereco) pair[0];
pair[0];
Departamento
dep
=
(Departamento)
Departamento dep = (Departamento) pair[1];
pair[1];
Universidade
uni
=
(Universidade)
pair[2];
Universidade uni = (Universidade) pair[2];
System.out.println(
System.out.println( "Universidade:
"Universidade: "" ++ uni.getRazao_social());
uni.getRazao_social());
System.out.println(
"Departamento:
"
+
dep.getNome());
System.out.println( "Departamento: " + dep.getNome());
System.out.println(
System.out.println( "Endereco:
"Endereco: "" ++ endereco.getRua());
endereco.getRua());
}}
Organizao
dos Arquivos