 
                                
One-to-Many
Many-to-One
Many-to-Many
Relacionamento One-to-Many
Relacionamento Many-to-One
Relacionamento Many-to-Many
Relacionamento Many-to-Many
 Hibernate não aceita identificador composto.
 Solução: criação de uma classe do tipo identificador.
Classe Pessoa
Classe Veiculo
Classe PossuiVeiculoPK
Classe PossuiVeiculo
Tabela por classe concreta
Tabela por hierarquia
Tabela por subclasse
Tabela por classe concreta
 Criada uma tabela/classe independente para cada
herança.
Tabela por classe concreta
 Classe Pessoa
Tabela por classe concreta
 Classe Professor
Tabela por classe concreta
 Classe Aluno
Tabela por hierarquia
 Todos os atributos da classe mãe e das classes filhas são
armazenados em uma única tabela.
 Propriedades not null não são permitidas para as
subclasses.
 Coluna especial discriminator, utilizada internamente
pelo Hibernate para definir o tipo do objeto.
Tabela por hierarquia
 Classe Pessoa
Tabela por hierarquia
 Classe Professor
Tabela por hierarquia
 Classe Aluno
Tabela por subclasse
 Cada classe em uma tabela
diferente.
 As classes filhas possuem
apenas os elementos que
não são herdados.
Tabela por subclasse
 Classe Pessoa
Tabela por subclasse
 Classe Professor
Tabela por subclasse
 Classe Aluno
Criteria Query API
SQL Nativo
HQL
(Hibernate Query Language)
Criteria Query API
 Conjunto de classes para criação de querys em Java.
 Querys definidas programaticamente.
 Independência do banco de dados (dialeto SQL)
http://ajava.org/online/hibernate3api/org/hiberna
te/Criteria.html#add(org.hibernate.criterion.
Criterion)
Criteria Query API
Public Lista Consulta () {
List lista = new List();
this.session = HibernateUtil.getInstance();
Criteria cri = session.createCriteria(Pessoa.class);
cri.add(Restriction.eq(“codPessoa”,1);
cri.addOrder.asc(“nome”);
lista = cri.list();
tx.commit();
sessao.close();
return lista;
}
SQL Nativo
 Faz uso do SQL nativo das consultas SQL
tradicionais.
Public Lista Consulta () {
List lista = new List();
Session sessao = HibernateUtility.getSession();
List lista = sessao.createSQLQuery("SELECT * FROM
CATS") .list();
tx.commit();
sessao.close();
return lista;
}
HQL (Hibernate Query Language)
 Extensão do SQL
 Faz pesquisa em objetos
 Pesquisa feita em objetos
 Não é necessário selecionar colunas do banco de
dados
 Um select * from Turma em SQL, vira select
Turma em HQL
HQL (Hibernate Query Language)
Public Lista Consulta () {
List lista = new List();
Session sessao = HibernateUtility.getSession();
Transaction tx = sessao.beginTransaction();
Query select = sessao.createQuery("from Turma as turma
where turma.nome = :nome");
select.setString("nome", "Jornalismo");
List lista = select.list();
tx.commit();
sessao.close();
return lista;
}
WWW.HIBERNATE.ORG
Bauer C, King G. Hibernate in action, Vol.1.
Greenwich, CT: Manning Publications Co.; 2004.
GONÇALVES, Edson. Desenvolvendo aplicações web
com jsp, servlets, javaserver faces, hibernate, ejb 3
persistence e ajax. Rio de Janeiro: Ciência Moderna,
2007.
LINHARES, Maurício. Introdução ao Hibernate 3.
Grupo de usuários Java. Disponível em
<http://www.guj.com.br/content/articles/hibernate/int
ruducao_hibernate3_guj.pdf >. Acesso em 2009.
Mapeie as tabelas do Diagrama de Entidade
Relacionamento(DER) abaixo.
Crie um sistema que cadastra, altere, consulte e delete dados de
um banco de dados, utilizando a ferramenta de mapeamento
objeto relacional hibernate para o seguinte caso:
 Uma revenda de veículos a qual ela mesma instala os opcionais nos
veículos, ela necessita de um sistema que relacione os opcionais com
os veículos, ou seja, quais opcionais foram instalados no veiculo.
Para os opcionais é necessário armazenar informações sobre o
fabricante, e para os veículos é necessário armazenar informações
sobre a montadora.
Observação: fabricante e montadoras devem ser duas tabelas
distintas.
Para esse exercício crie também o modelo de entidade
relacionamento.
Coloque nas tabelas os dados que você imagina que devem ser
armazenados.
Herança