![Page 1: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/1.jpg)
Hibernate
Mapeamento O/R
![Page 2: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/2.jpg)
© LES/PUC-Rio
Hibernate – O que é?
• Ferramenta para mapeamento O/R em Java– Uma das mais difundidas
• Separação entre a aplicação e o acesso ao banco
• Facilidade de uso– Controle de transações
– Independência quanto ao tipo de base de dados
• Consulta de dados– HQL
– Criteria Queries
• Licença LGPL
![Page 3: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/3.jpg)
Hibernate - Arquitetura
![Page 4: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/4.jpg)
© LES/PUC-Rio
Arquitetura - Overview
![Page 5: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/5.jpg)
Hibernate – Classes Persistentes
![Page 6: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/6.jpg)
© LES/PUC-Rio
Classes Persistentes
• Implementam entidades lógica do negócio
• POJOs (Plain Old Java Object)
– Construtor padrão
– Possui métodos de acesso – gets/sets (opcional)
• Possui um atributo identificador (opcional)
• Classes não final (recomendado)
![Page 7: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/7.jpg)
© LES/PUC-Rio
POJO - Exemplo
![Page 8: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/8.jpg)
© LES/PUC-Rio
POJO - Exemplo
mapeamento
![Page 9: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/9.jpg)
© LES/PUC-Rio
Mapeamento
• Devemos informar ao Hibernate como relacionar o modelo de objetos com o modelo relacional
• Arquivos de mapeamento
– Descrevem como são feitos os mapeamentos
![Page 10: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/10.jpg)
© LES/PUC-Rio
Arquivo de Mapeamento
• Arquivo XML
• Declaração de DTD
– Útil para auto-completion
• Declaração das classes
• Usualmente possuem extensão .hbm.xml
Comunidade.hbm.xml
![Page 11: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/11.jpg)
© LES/PUC-Rio
XML
• Recomendação da W3C para gerar linguagens de marcação para necessidades especiais
– Separação do conteúdo e da formatação
– Legibilidade tanto por humanos quanto por máquinas
– Possibilidade de criação de tags sem limitação
– Criação de arquivos para validação de estrutura
– Com seu uso pode-se interligar bancos de dados distintos
– Simplicidade
• Referencias
– http://www.w3schools.com/xml/
– http://www.w3.org/XML/
![Page 12: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/12.jpg)
© LES/PUC-Rio
Arquivo de Mapeamento – Ex POJO
• Declaração de classe usando o elemento class
– Indicação do nome da classe
– Indicação do nome da Tabela (opcional)
![Page 13: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/13.jpg)
© LES/PUC-Rio
Mapeamento de Identificadores
• Indicação da chave primária
– nome do atributo
– tipo
• Escolha do gerador da Chave
ver classe
![Page 14: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/14.jpg)
© LES/PUC-Rio
Tipos de Geradores de Chave
• increment
• identity
• sequence
• hilo
• seqhilo
• uuid
• guid
• native
• assigned
• select
• foreign
![Page 15: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/15.jpg)
© LES/PUC-Rio
Mapeamento de Propriedades
• Elemento property
– Indicação de nome e tipo
• Se não explicitar coluna considera o nome da propriedade
ver classe
![Page 16: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/16.jpg)
© LES/PUC-Rio
Mapeamento de Propriedades
• Tipos
– nomes de tipos básicos do Hibernate (integer, string, character, date, timestamp, float, binary, serializable, object, blob).
– nome de tipos básicos Java (int, float, char, java.lang.String, java.util.Date, java.lang.Integer, java.sql.Clob, java.util.Calendar).
– nome de uma classe Java Serializable.
– Se não especificado o Hibernate usa reflexão
• Outras propriedades
– Access (property | field): controla como o Hibernate vai acessar os atributos em tempo de execução (default: property)
– column: nome da coluna na tabela do banco (default: nome do atributo)
– not-null (true | false): determina se a propriedade pode ser nula (default: false)
![Page 17: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/17.jpg)
© LES/PUC-Rio
Mapeamento de Relacionamentos
• one-to-one
• many-to-one
• one-to-many
• many-to-many
![Page 18: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/18.jpg)
© LES/PUC-Rio
Mapeamento de Relacionamentos - Exemplo
Unidirecional one-to-many
Bidirecional many-to-many
Unidirecional many-to-one
Unidirecional many-to-one
![Page 19: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/19.jpg)
© LES/PUC-Rio
Mapeamento – many-to-one
• <many-to-one
– name
– class
– column
![Page 20: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/20.jpg)
© LES/PUC-Rio
Modelo relacional
atores
id <<PK>>
nome
nascimento
comunidades
id <<PK>>
nome
descricao
atorID <<FK>>
![Page 21: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/21.jpg)
© LES/PUC-Rio
Mapeamento – one-to-one
![Page 22: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/22.jpg)
© LES/PUC-Rio
Modelo relacional
atores
id <<FK>>
nome
nascimento
cadastros
id <<PK>>
username
senha
![Page 23: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/23.jpg)
© LES/PUC-Rio
Mapeamento – uso de Coleções
• java.util.Set, java.util.Collection, java.util.List, java.util.Map, java.util.SortedSet, java.util.SortedMap...
![Page 24: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/24.jpg)
© LES/PUC-Rio
Modelo relacional
papeis
id <<PK>>
nome
descricao
comunidadeID <<FK>>
comunidades
id <<PK>>
nome
descricao
atorID <<FK>>
![Page 25: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/25.jpg)
© LES/PUC-Rio
Mapeamento – List – many-to-many
![Page 26: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/26.jpg)
© LES/PUC-Rio
Mapeamento – many-to-many
![Page 27: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/27.jpg)
© LES/PUC-Rio
Modelo relacional
atores
id <<PK>>
nome
nascimento
ator_papel
atorID <<FK>>
papelID <<FK>>
papeis
id <<PK>>
nome
descricao
comunidadeID <<FK>>
![Page 28: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/28.jpg)
© LES/PUC-Rio
Mapeamento - Herança
• Estratégia de estrutura genérica não utilizada
• Três estratégias
– Tabela por hierarquia
– Tabela por subclasse
– Tabela por classe concreta
• Recurso
– Polimorfismo implícito
![Page 29: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/29.jpg)
© LES/PUC-Rio
Tabela por hierarquia
• Precisa determinar um discriminator
![Page 30: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/30.jpg)
© LES/PUC-Rio
Modelo relacional
Ator
id <<PK>>
nome
nascimento
escola
ano
ocupacao
salario
TIPO_DE_ATOR
![Page 31: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/31.jpg)
© LES/PUC-Rio
Tabela por subclasse
![Page 32: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/32.jpg)
© LES/PUC-Rio
Modelo relacional
Ator
id <<PK>>
nome
nascimento
Trabalhador
atorID <<FK>>
ocupacao
salario
Estudante
atorID <<FK>>
escola
ano
![Page 33: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/33.jpg)
© LES/PUC-Rio
Tabela por classe concreta
![Page 34: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/34.jpg)
© LES/PUC-Rio
Modelo relacional
Trabalhador
id <<PK>>
nome
nascimento
ocupacao
salario
Estudante
id <<PK>>
nome
nascimento
escola
ano
![Page 35: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/35.jpg)
© LES/PUC-Rio
Tabela por classe concreta – polimorfismo implicito
![Page 36: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/36.jpg)
© LES/PUC-Rio
Configuração
• hibernate.properties ou hibernate.cfg.xml– Driver, localização do banco, senha, mapeamentos, etc.
![Page 37: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/37.jpg)
© LES/PUC-Rio
Resultado
• Um arquivo de mapeamento por classe persistente
• Um arquivo de configuração
![Page 38: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/38.jpg)
© LES/PUC-Rio
Arquitetura Detalhada
![Page 39: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/39.jpg)
© LES/PUC-Rio
Arquitetura Detalhada
![Page 40: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/40.jpg)
© LES/PUC-Rio
SessionFactory (org.hibernate.SessionFactory)
• Threadsafe
• Montada a partir do arquivo de configuração (hibernate.cfg.xml)
• Fábrica de Session
• Geralmente se usa uma por aplicação
![Page 41: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/41.jpg)
© LES/PUC-Rio
Arquitetura Detalhada
![Page 42: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/42.jpg)
© LES/PUC-Rio
Session (org.hibernate.Session)
• Representa a troca de informações entre a aplicação e um esquema de armazenamento de dados
• Fábrica de transações
• Wrapper para conexões JDBC
• Cache de objetos persistentes
![Page 43: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/43.jpg)
© LES/PUC-Rio
Aplicação Exemplo
• Uma aplicação onde é possível
– Manter atores
• Cadastrar novos
• Editar existentes
– Manter Comunidades
• Cadastrar novas
• Editar existentes
• Adicionar novos papeis
• Gerenciar Papeis
– Consultar atores
– Consultar Comunidades
Modelo
![Page 44: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/44.jpg)
© LES/PUC-Rio
Copiar bibliotecas
• Copiar as bibliotecas necessárias para o funcionamento do hibernate
![Page 45: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/45.jpg)
© LES/PUC-Rio
Criando o banco
• Configuration– Busca o arquivo hibernate.cfg.xml no classpath
• SchemaExport– Classe usada para criar o esquema do banco de dados
• É necessário a existência de um banco com o nome especificado na configuração
![Page 46: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/46.jpg)
© LES/PUC-Rio
Trabalhando com classes persistentes
SessionFactory
Configuration
hibernate.cfg.xml
cria
BANCO
Session
C1
P1
P2
A1
save
delete
![Page 47: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/47.jpg)
© LES/PUC-Rio
Criando uma Session
• Criando uma SessionFactory
• Criando uma Session
![Page 48: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/48.jpg)
© LES/PUC-Rio
Demarcação de transação
• Fronteiras de transação são obrigatórias
• Envolve 4 passos básicos
– iniciar transação
– dar o commit na transação
– tratar erros
– fechar sessão
![Page 49: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/49.jpg)
© LES/PUC-Rio
Tornando um objeto persistente
• Novas instancia são consideradas transientes
• Usa-se o comando save para tornar um objeto persistente
• Ao salvar o seu id é gerado
• Se o objeto contiver associação com outros objetos é preciso salva-los antes (ou usar cascade)
![Page 50: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/50.jpg)
© LES/PUC-Rio
Carregando um objeto
• Pode usar dois comandos
– load
• Lança exceção
– Get
• Retorna nulo
![Page 51: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/51.jpg)
© LES/PUC-Rio
Consultando objetos
• HQL
– Linguagem de consulta orientada a objeto
• Criteria
– Uma API orientada a objeto para busca
• SQL
![Page 52: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/52.jpg)
© LES/PUC-Rio
HQL
![Page 53: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/53.jpg)
© LES/PUC-Rio
Paginação
• Usado para determinar fronteiras no resultado
• Útil para evitar desperdício de memória. Ex.: Google
![Page 54: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/54.jpg)
© LES/PUC-Rio
Externalizando queries
• Queries são declaradas nos mapeamentos• Não mistura código de consulta com o da aplicação
![Page 55: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/55.jpg)
© LES/PUC-Rio
Criteria API
• Mais próximo de desenvolvedores que não conhecem linguagens de consulta
![Page 56: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/56.jpg)
© LES/PUC-Rio
Alterando objetos persistentes
![Page 57: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/57.jpg)
© LES/PUC-Rio
Tornando os objetos transientes
• Remove o objeto do banco
• Cuidado para não resultar em violação de integridade
• Exemplo: ao remover um ator seu cadastro deve ser removido também
![Page 58: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/58.jpg)
© LES/PUC-Rio
Persistência transitiva
• As operações (save, delete, update) realizadas com o banco podem resultar em perda de integridade
• O Hibernate possui mecanismos para tratar relações do tipo pai/filho automaticamente
• Ex.: Ao remover um ator do banco não faz sentido manter o cadastro do ator
![Page 59: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/59.jpg)
© LES/PUC-Rio
Carga preguiçosa
• Carga dos objetos é feita apenas quando necessário
• Evita sobrecarregar a memória com objetos não necessários
• Hibernate usa proxies das coleções Java
• Pode ser difícil de se trabalhar (LazyInitializationException)
![Page 60: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/60.jpg)
© LES/PUC-Rio
Boas práticas e padrões
• Uso de DAOs (Generic DAOs)
• Patterns
– Session-per-request
• Uma sessão é aberta no inicio de uma requisição e fechada ao final
– Implementada com ServletFilter
• Anti-patters
– Session-per-operation
• Uma sessão é aberta para cada operação executada
![Page 61: Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação](https://reader037.vdocuments.pub/reader037/viewer/2022110305/552fc131497959413d8d5ee6/html5/thumbnails/61.jpg)
© LES/PUC-Rio
Exercícios
• Trabalhar a “auto-didática”– Referência do Hibernate bastante completa:
• http://www.hibernate.org• http://www.hibernate.org/hib_docs/v3/reference/en/html/
• Suponha uma aplicação para fazer o controle de gastos. • Nela seria possível cadastrar entradas de credito ou débito que
determinado indivíduo realizou. • Cada entrada possui um valor, uma data e uma categoria.• Deve ser possível
– Registrar categorias– Verificar quanto foi gasto em determinada categoria em determinado
intervalo de tempo– Verificar qual foi a percentagem que determinada categoria gastou em
determinado intervalo de tempo
• Não se preocupe com– Interface– Controle de usuários