hibernate
TRANSCRIPT
![Page 1: Hibernate](https://reader036.vdocuments.mx/reader036/viewer/2022062822/587f59221a28ab0d378b6d83/html5/thumbnails/1.jpg)
ORM e Hibernate
Conceitos
![Page 2: Hibernate](https://reader036.vdocuments.mx/reader036/viewer/2022062822/587f59221a28ab0d378b6d83/html5/thumbnails/2.jpg)
ORM
![Page 3: Hibernate](https://reader036.vdocuments.mx/reader036/viewer/2022062822/587f59221a28ab0d378b6d83/html5/thumbnails/3.jpg)
O problema!Grafo de objetos versus modelo relacional de tabelas
Acesso aos dados é fundamentalmente diferenteDiferença de granularidadeBanco de dados não possui herança
ORM
![Page 4: Hibernate](https://reader036.vdocuments.mx/reader036/viewer/2022062822/587f59221a28ab0d378b6d83/html5/thumbnails/4.jpg)
AlternativasManual utilizando acesso direto ao banco (mapeamento programático)Banco de dados orientado a objetos / OODBMS / Non-SQLSerializaçãoPersistência utilizando mapeamento objeto relacional
ORM
![Page 5: Hibernate](https://reader036.vdocuments.mx/reader036/viewer/2022062822/587f59221a28ab0d378b6d83/html5/thumbnails/5.jpg)
O que é persistência?Armazenar dados em um RDBMS utilizando SQL.
O que é Hibernate?Framework de mapeamento objeto relacional (ORM).
O que é ORM?Transformar dados de uma representação para outra.Persistência automatizada (transparente) de objetos no banco de dados.
ORM
![Page 6: Hibernate](https://reader036.vdocuments.mx/reader036/viewer/2022062822/587f59221a28ab0d378b6d83/html5/thumbnails/6.jpg)
ORM
Níveis de ORM Simples
Complexo
![Page 7: Hibernate](https://reader036.vdocuments.mx/reader036/viewer/2022062822/587f59221a28ab0d378b6d83/html5/thumbnails/7.jpg)
Porque ORM?Produtividade
Reduz o tempo de desenvolvimentoManutenção
Minimiza os efeitos de mudanças entre as alterações dos objetos e o modelo relacional
PerformanceCaching, lazy, tratamento de gargalos de banco de dados
IndependênciaMaior facilidade para desenvolvimento de aplicação independentes de banco de dados.
ORM
![Page 8: Hibernate](https://reader036.vdocuments.mx/reader036/viewer/2022062822/587f59221a28ab0d378b6d83/html5/thumbnails/8.jpg)
ORM
Base de dados
MapeamentosModelo
de objetos
![Page 9: Hibernate](https://reader036.vdocuments.mx/reader036/viewer/2022062822/587f59221a28ab0d378b6d83/html5/thumbnails/9.jpg)
HibernateCriado em nov/2001
Gavin KingRed Hat / Jboss
SuporteLicenciado sobre LGPLHibernate 3, dez/2004JPA / JSR-220
Hibernate
![Page 10: Hibernate](https://reader036.vdocuments.mx/reader036/viewer/2022062822/587f59221a28ab0d378b6d83/html5/thumbnails/10.jpg)
NHibernateNHibernate é uma implementação da especificação Hibernate da plataforma JavaPrimeira versão em 2005Versão 2.0 em agosto/2008 sobre o Hibernate 3Construído e suportado pela comunidadehttp://community.jboss.org/wiki/NHibernateUsersFAQhttp://nhforge.org/
Hibernate
![Page 11: Hibernate](https://reader036.vdocuments.mx/reader036/viewer/2022062822/587f59221a28ab0d378b6d83/html5/thumbnails/11.jpg)
SessionFactoryCache de mapeamentos e configuraçõesPara um banco de dadosFábrica de sessões para a aplicaçãoSingleton / Multi-threadedObjeto de longa duraçãoPode manter um nível de cache (second-level cache)
Compartilhamento entre sessões/transações diferentes
Hibernate
![Page 12: Hibernate](https://reader036.vdocuments.mx/reader036/viewer/2022062822/587f59221a28ab0d378b6d83/html5/thumbnails/12.jpg)
SessionSingle-threadObjeto de curto duraçãoEncapsula uma conexão de bancoFábrica de transaçõesPossui uma cache obrigatória (first-level cache)
Hibernate
![Page 13: Hibernate](https://reader036.vdocuments.mx/reader036/viewer/2022062822/587f59221a28ab0d378b6d83/html5/thumbnails/13.jpg)
Hibernate
Detached
Persistent
Transientnew()
get()load()find()etc...
save()saveOrUpdate() delete()
evict()close()clear()
update()saveOrUpdate()lock()
garbage
garbage
![Page 14: Hibernate](https://reader036.vdocuments.mx/reader036/viewer/2022062822/587f59221a28ab0d378b6d83/html5/thumbnails/14.jpg)
O problema do select N+1Um primeiro select retorna elementos com uma lista associada.
Para cada elemento, será necessário outro selectProblema clássico de performance em Java
Lazy loadingHQL / CriteriaMapeamento
Hibernate
![Page 15: Hibernate](https://reader036.vdocuments.mx/reader036/viewer/2022062822/587f59221a28ab0d378b6d83/html5/thumbnails/15.jpg)
Processo de desenvolvimento com Hibernate4 métodosDiferente abordagens para as situações
Hibernate
![Page 16: Hibernate](https://reader036.vdocuments.mx/reader036/viewer/2022062822/587f59221a28ab0d378b6d83/html5/thumbnails/16.jpg)
Middle-out Novo desenvolvimentoProjeto de modelo de classesMapeamento do modeloImplementação dos objetosExportação dos objetos para modelo relacional
Hibernate
![Page 17: Hibernate](https://reader036.vdocuments.mx/reader036/viewer/2022062822/587f59221a28ab0d378b6d83/html5/thumbnails/17.jpg)
Bottom-up Base de dados existentesMapeamento do modelo relacional para objetos
Possibilidade de uso de ferramentas (Hibernate Tools)
Implementação de regras sobre o modelo
Hibernate
![Page 18: Hibernate](https://reader036.vdocuments.mx/reader036/viewer/2022062822/587f59221a28ab0d378b6d83/html5/thumbnails/18.jpg)
Top-downCódigo já existenteImplementação de modelo de objetosMapeamento dos objetosExportação dos objetos para modelo relacional
Hibernate
![Page 19: Hibernate](https://reader036.vdocuments.mx/reader036/viewer/2022062822/587f59221a28ab0d378b6d83/html5/thumbnails/19.jpg)
Meet in the middleMigração de acesso direto para ORMCriação de mapeamento entre os objetos existentes e a base de dados
Hibernate
![Page 20: Hibernate](https://reader036.vdocuments.mx/reader036/viewer/2022062822/587f59221a28ab0d378b6d83/html5/thumbnails/20.jpg)
Hibernate TipsNão usar tipos primitivosSalve na hierarquia
Use o simples!Cascade
Equals / HashCodeLazy loadingCriteria
Example
Hibernate
![Page 21: Hibernate](https://reader036.vdocuments.mx/reader036/viewer/2022062822/587f59221a28ab0d378b6d83/html5/thumbnails/21.jpg)
Hibernate TipsMany-to-many reais são raros
Prefira dois one-to-manyAtenção com Session flushing
FetchModeNamedQueriesCacheNão setar atributos diretamente na criação
Hibernate cria objetos
Hibernate
![Page 22: Hibernate](https://reader036.vdocuments.mx/reader036/viewer/2022062822/587f59221a28ab0d378b6d83/html5/thumbnails/22.jpg)
NHibernate Tipshttp://nhforge.org/wikishttp://nhforge.org/doc/nh/en/index.htmlDocumentação do Hibernate (Java)http://nhprof.com/Override
public override bool Equals(object obj)public override int GetHashCode()
Hibernate