O documento discute ORM (Mapeamento Objeto-Relacional) e Hibernate, um framework popular de ORM. Aborda os conceitos básicos de ORM, como mapear objetos para bancos de dados relacionais, e as vantagens de produtividade e manutenção que ORM oferece. Também explica os principais componentes do Hibernate como SessionFactory, Session e como o processo de desenvolvimento com Hibernate funciona.
3. O problema!
Grafo de objetos versus modelo relacional de tabelas
Acesso aos dados é fundamentalmente diferente
Diferença de granularidade
Banco de dados não possui herança
ORM
4. Alternativas
Manual utilizando acesso direto ao banco (mapeamento
programático)
Banco de dados orientado a objetos / OODBMS / Non-SQL
Serialização
Persistência utilizando mapeamento objeto relacional
ORM
5. 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
7. Porque ORM?
Produtividade
Reduz o tempo de desenvolvimento
Manutenção
Minimiza os efeitos de mudanças entre as alterações dos
objetos e o modelo relacional
Performance
Caching, lazy, tratamento de gargalos de banco de dados
Independência
Maior facilidade para desenvolvimento de aplicação
independentes de banco de dados.
ORM
10. NHibernate
NHibernate é uma implementação da especificação Hibernate da
plataforma Java
Primeira versão em 2005
Versão 2.0 em agosto/2008 sobre o Hibernate 3
Construído e suportado pela comunidade
http://community.jboss.org/wiki/NHibernateUsersFAQ
http://nhforge.org/
Hibernate
11. SessionFactory
Cache de mapeamentos e configurações
Para um banco de dados
Fábrica de sessões para a aplicação
Singleton / Multi-threaded
Objeto de longa duração
Pode manter um nível de cache (second-level cache)
Compartilhamento entre sessões/transações diferentes
Hibernate
12. Session
Single-thread
Objeto de curto duração
Encapsula uma conexão de banco
Fábrica de transações
Possui uma cache obrigatória (first-level cache)
Hibernate
14. O problema do select N+1
Um primeiro select retorna elementos com uma lista
associada.
Para cada elemento, será necessário outro select
Problema clássico de performance em Java
Lazy loading
HQL / Criteria
Mapeamento
Hibernate
17. Bottom-up
Base de dados existentes
Mapeamento do modelo relacional para objetos
Possibilidade de uso de ferramentas (Hibernate Tools)
Implementação de regras sobre o modelo
Hibernate