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