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