hibernate

Post on 18-Jan-2017

24 Views

Category:

Internet

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

ORM e Hibernate

Conceitos

ORM

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

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

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

ORM

Níveis de ORM Simples

Complexo

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

ORM

Base de dados

MapeamentosModelo

de objetos

HibernateCriado em nov/2001

Gavin KingRed Hat / Jboss

SuporteLicenciado sobre LGPLHibernate 3, dez/2004JPA / JSR-220

Hibernate

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

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

SessionSingle-threadObjeto de curto duraçãoEncapsula uma conexão de bancoFábrica de transaçõesPossui uma cache obrigatória (first-level cache)

Hibernate

Hibernate

Detached

Persistent

Transientnew()

get()load()find()etc...

save()saveOrUpdate() delete()

evict()close()clear()

update()saveOrUpdate()lock()

garbage

garbage

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

Processo de desenvolvimento com Hibernate4 métodosDiferente abordagens para as situações

Hibernate

Middle-out Novo desenvolvimentoProjeto de modelo de classesMapeamento do modeloImplementação dos objetosExportação dos objetos para modelo relacional

Hibernate

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

Top-downCódigo já existenteImplementação de modelo de objetosMapeamento dos objetosExportação dos objetos para modelo relacional

Hibernate

Meet in the middleMigração de acesso direto para ORMCriação de mapeamento entre os objetos existentes e a base de dados

Hibernate

Hibernate TipsNão usar tipos primitivosSalve na hierarquia

Use o simples!Cascade

Equals / HashCodeLazy loadingCriteria

Example

Hibernate

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

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

top related