SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
   
Introdução ao Hibernate
Walter Itamar Mourão
walter.mourao@gmail.com
   
Mapeamento Objeto-Relacional
● O mapeamento objeto­relacional é uma técnica de 
programação para a conversão de dados entre 
bancos de dados relacionais e linguagens 
orientadas a objetos.
● Hibernate, iBatis, etc.
   
Mapeamento Objeto-
Relacional
POJO
int id;
String name;
String getName()
int getId()
void
setName(String)
void setId(int)
Tabela SQL
id [number] primary
key,
name [varchar(50)]
   
Hibernate
● Ferramenta para persistência de classes Java através 
do mapeamento Objeto/Relacional.
● nHibernate=Hibernate para .net
● Compatível com JPA.
● Projeto open­source (licença LGPL) iniciado em 
2001 por Gavin King, atualmente mantido pelo 
grupo JBoss.
● É a base de persistência da implementação EJB do 
servidor JBoss.
   
Arquitetura
   
Vantagens
● Alivia o programador de tarefas triviais no acesso 
ao banco.
● Encapsula JDBC, SQL, transações (mais sobre isso 
no Spring).
● Facilita a otimização através do uso de caches e 
estratégias de leitura dos dados (fetch).
● Não exige contêiner.
   
Vantagens
● Ferramentas para criação e atualização de scripts.
● Modelo de objetos desacoplado da implementação 
do banco (independência de fornecedor).
● Persistência de POJO (anotações são opcionais).
● HQL, Criteria Queries
● Permite o acesso via SQL
● Versionamento automático
● Open­source, custo zero.
   
Desvantagens
● Curva de aprendizado “íngreme”.
● Má performance em situações de grande volume de 
atualizações.
● Alguns mapeamentos não são muito diretos e 
demandam uma boa reflexão antes da 
implementação, principalmente em casos de 
hierarquias.
   
SessionFactory
● Conjunto de mapeamentos e definições referentes a 
um banco de dados.
● Threadsafe e único para a aplicação inteira.
● Factory para Session
● Pode conter caches de segundo nível (o Session é o 
cache de primeiro nível).
   
Configuração
A configuração pode ser via programação, via 
arquivos XML ou via configuração Spring.
● Dialeto SQL
Nome do conjunto de comando SQL que o Hibernate 
deve utilizar para acessar um determinado banco de 
dados.
● NomeDaClasse.hbm.xml
arquivos que contém informações de mapeamento de 
uma determinada classe ou hierarquia.
   
Session
● Objeto transiente, associado a uma única thread que 
representa uma unidade de conversação (não de 
transação) entre a aplicação e o banco de dados.
● Encapsula a conexão JDBC, abrindo/fechando ou 
buscando/liberando do pool.
● Factory para Transaction.
● Contém sempre um cache de primeiro nível dos 
objetos persistentes.
   
Objetos persistentes
● Os objetos persistentes são criados a partir de uma 
sessão e são sempre (*) vinculados a ela.
* existem situações de exceção, mas sempre a partir 
de programação explícita nesse sentido.
   
Transaction
● Objeto demarcador de transações (JDBC, JTA, 
CORBA, etc.) únicas.
● Sempre associado a um Session.
   
ConnectionProvider
● Objeto único na aplicação responsável pelo 
fornecimento de conexões para o Session.
   
HQL
● Hibernate Query Language
Linguagem de consulta baseada em SQL, porém com 
extensões para suportar classes.
Ex.:
select g.id from Grupo g where g.descricao like 'A%'
from Usuario u join u.grupo
from Usuario u where u.grupo.descricao like 'A%'
   
Criteria Queries
● Mecanismo de consultas usando somente Java.
Ex.:
final Criteria criteria =session.createCriteria(Grupo.class);
criteria.add(Restrictions.ilike("descricao", descricao));
criteria.addOrder(Order.asc("descricao"));
final Collection grupos = criteria.list();
   
HQL - Vantagens
● Isolamento da aplicação: pode­se usar em 
mecanismos de pesquisa e relatórios 
independentemente do programador.
●  Compacto e auto­contido.
● Permite transformações na própria query.
   
Criteria - Vantagens
● Mais natural para o programador.
● Permite construções dinâmicas.
   
Ferramentas
● Criação, atualização e validação dos mapeamentos.
● Criação do mapeamento a partir do banco.
● Hibernate console.
   
AndroMDA & Hibernate
● Geração de 100% das configurações e código Java 
necessários.
● Suporte a Criteria Queries e HQL no modelo.
● Suporte a Criteria “simplificada” através das classes 
Search e SearchParameter.
● Geração de métodos com transformações.
● Suporte a OCL.
   
AndroMDA & Hibernate
● Ferramentas de criação/atualização/validação de 
banco integradas.
● Mapeamento de hierarquias.
● Mapeamento de enumerados e tipos diversos.

Mais conteúdo relacionado

Destaque

Processos iniciais do mapeamento OR
Processos iniciais do mapeamento ORProcessos iniciais do mapeamento OR
Processos iniciais do mapeamento ORNécio de Lima Veras
 
Sistema de gestão de restaurantes self service - ultima versão 3
Sistema de gestão de restaurantes self   service - ultima versão 3Sistema de gestão de restaurantes self   service - ultima versão 3
Sistema de gestão de restaurantes self service - ultima versão 3brunogea
 
Introdução ao JPA com Hibernate
Introdução ao JPA com HibernateIntrodução ao JPA com Hibernate
Introdução ao JPA com HibernateDanilo Braga
 
Persistência com JPA usando o NetBeans 7
Persistência com JPA usando o NetBeans 7Persistência com JPA usando o NetBeans 7
Persistência com JPA usando o NetBeans 7Claudio Martins
 
Restaurante
RestauranteRestaurante
Restaurantemarcuzu
 
Persistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPAPersistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPACaelum
 
Apostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e PrimefacesApostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e PrimefacesRosicleia Frasson
 

Destaque (8)

Processos iniciais do mapeamento OR
Processos iniciais do mapeamento ORProcessos iniciais do mapeamento OR
Processos iniciais do mapeamento OR
 
Aula JPA
Aula JPAAula JPA
Aula JPA
 
Sistema de gestão de restaurantes self service - ultima versão 3
Sistema de gestão de restaurantes self   service - ultima versão 3Sistema de gestão de restaurantes self   service - ultima versão 3
Sistema de gestão de restaurantes self service - ultima versão 3
 
Introdução ao JPA com Hibernate
Introdução ao JPA com HibernateIntrodução ao JPA com Hibernate
Introdução ao JPA com Hibernate
 
Persistência com JPA usando o NetBeans 7
Persistência com JPA usando o NetBeans 7Persistência com JPA usando o NetBeans 7
Persistência com JPA usando o NetBeans 7
 
Restaurante
RestauranteRestaurante
Restaurante
 
Persistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPAPersistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPA
 
Apostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e PrimefacesApostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e Primefaces
 

Semelhante a Hibernate

Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Rafael Benevides
 
Mini curso hibernate com anotações
Mini curso hibernate com anotaçõesMini curso hibernate com anotações
Mini curso hibernate com anotaçõesdieguinhomcz
 
Mini curso hibernate com anotações
Mini curso hibernate com anotaçõesMini curso hibernate com anotações
Mini curso hibernate com anotaçõesdieguinhomcz
 
Introdução ao JPA com Hibernate
Introdução ao JPA com HibernateIntrodução ao JPA com Hibernate
Introdução ao JPA com HibernateDanilo Braga
 
Inovações Na Plataforma Java
Inovações Na Plataforma JavaInovações Na Plataforma Java
Inovações Na Plataforma JavaFilipe Portes
 
ApresentaçãO Ejb (Enterprise Java Beans)
ApresentaçãO Ejb (Enterprise Java Beans)ApresentaçãO Ejb (Enterprise Java Beans)
ApresentaçãO Ejb (Enterprise Java Beans)mauriciopel
 
Mapeamento Objeto Relacional em PHP com Outlet ORM
Mapeamento Objeto Relacional em PHP com Outlet ORMMapeamento Objeto Relacional em PHP com Outlet ORM
Mapeamento Objeto Relacional em PHP com Outlet ORMFábio Rehm
 
Projeto de Banco De Dados - Upcoming Events
Projeto de Banco De Dados - Upcoming EventsProjeto de Banco De Dados - Upcoming Events
Projeto de Banco De Dados - Upcoming EventsRafael Barbolo
 
Workshop Hibernate Com Comentarios
Workshop Hibernate Com ComentariosWorkshop Hibernate Com Comentarios
Workshop Hibernate Com ComentariosMarcelo Mrack
 
Infinispan - Distribuição de Dados com Java
Infinispan - Distribuição de Dados com JavaInfinispan - Distribuição de Dados com Java
Infinispan - Distribuição de Dados com JavaWagner Roberto dos Santos
 

Semelhante a Hibernate (20)

Compweek
CompweekCompweek
Compweek
 
JPA com Hibernate
JPA com HibernateJPA com Hibernate
JPA com Hibernate
 
Hibernate
HibernateHibernate
Hibernate
 
Hibernate conceitos
Hibernate conceitosHibernate conceitos
Hibernate conceitos
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007
 
Mini curso hibernate com anotações
Mini curso hibernate com anotaçõesMini curso hibernate com anotações
Mini curso hibernate com anotações
 
Mini curso hibernate com anotações
Mini curso hibernate com anotaçõesMini curso hibernate com anotações
Mini curso hibernate com anotações
 
Hibernate - Aula 01
Hibernate - Aula 01Hibernate - Aula 01
Hibernate - Aula 01
 
Introdução ao JPA com Hibernate
Introdução ao JPA com HibernateIntrodução ao JPA com Hibernate
Introdução ao JPA com Hibernate
 
Inovações Na Plataforma Java
Inovações Na Plataforma JavaInovações Na Plataforma Java
Inovações Na Plataforma Java
 
Hibernate
HibernateHibernate
Hibernate
 
ApresentaçãO Ejb (Enterprise Java Beans)
ApresentaçãO Ejb (Enterprise Java Beans)ApresentaçãO Ejb (Enterprise Java Beans)
ApresentaçãO Ejb (Enterprise Java Beans)
 
Mapeamento Objeto Relacional em PHP com Outlet ORM
Mapeamento Objeto Relacional em PHP com Outlet ORMMapeamento Objeto Relacional em PHP com Outlet ORM
Mapeamento Objeto Relacional em PHP com Outlet ORM
 
Serra StarTec 2013 - Java EE
Serra StarTec 2013 - Java EESerra StarTec 2013 - Java EE
Serra StarTec 2013 - Java EE
 
Apache e Java
Apache e JavaApache e Java
Apache e Java
 
Projeto de Banco De Dados - Upcoming Events
Projeto de Banco De Dados - Upcoming EventsProjeto de Banco De Dados - Upcoming Events
Projeto de Banco De Dados - Upcoming Events
 
Workshop Hibernate Com Comentarios
Workshop Hibernate Com ComentariosWorkshop Hibernate Com Comentarios
Workshop Hibernate Com Comentarios
 
Infinispan - Distribuição de Dados com Java
Infinispan - Distribuição de Dados com JavaInfinispan - Distribuição de Dados com Java
Infinispan - Distribuição de Dados com Java
 
Treinamento ORM .Net
Treinamento ORM .NetTreinamento ORM .Net
Treinamento ORM .Net
 
Anotações do mapeamento OR
Anotações do mapeamento ORAnotações do mapeamento OR
Anotações do mapeamento OR
 

Hibernate