1.
Introdução ao Hibernate
Walter Itamar Mourão
walter.mourao@gmail.com
2.
Mapeamento Objeto-Relacional
● O mapeamento objetorelacional é 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.
3.
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)]
7.
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
● Opensource, custo zero.
8.
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.
12.
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.
16.
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();
17.
HQL - Vantagens
● Isolamento da aplicação: podese usar em
mecanismos de pesquisa e relatórios
independentemente do programador.
● Compacto e autocontido.
● Permite transformações na própria query.
18.
Criteria - Vantagens
● Mais natural para o programador.
● Permite construções dinâmicas.
20.
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.
21.
AndroMDA & Hibernate
● Ferramentas de criação/atualização/validação de
banco integradas.
● Mapeamento de hierarquias.
● Mapeamento de enumerados e tipos diversos.