Hibernate

Propaganda
Hibernate
Apresentação
Sidney Vilaça
Tópicos





Conceitos básicos: banco de dados(b.d),
orientação a objetos(o.o.) ...
Persistência de dados e persistência de objetos
e mapeamento O/R.
O que é o Hibenate?
Exemplo do Hibernate.
Persistência de dados em Hibernate.
Banco de Dados

Bancos de dados (ou bases de dados) são arquivos ou
sistemas com uma estrutura regular que organizam
informações.

Um Banco de Dados Relacional é um sistema de
armazenamento de dados baseado nos relacionamentos
entre elementos de dados buscando uma normalização
(sem redundâncias) dos dados.
Persistência de Dados

A Persistência de Dados consiste no
armazenamento confiável e coerente das
informações em um sistema de armazenamento
de dados.
Persistência de Objetos

A Persistência de Objetos é o armazenamento
consistente de objetos de uma aplicação o.o. para que
estes objetos existam em diferentes execuções de
diferentes aplicações.
O.O. + B.D. , quadro atual



Problema: Temos um aplicativo o.o. que precisa
interagir com um banco de dados. O que fazer?
Os bancos de dados o.o. ainda têm grandes
desvantagens em relação aos relacionais.
O padrão vigente nas empresas é o banco de dados
relacional, e sem uma perspectivas de mudança.
Mapeamento OR, a solução

O Mapeamento Objeto-Relacional (OR) é a solução para
o problema.

O Mapeamento OR é uma técnica de desenvolvimento
que consiste em representar o objeto de maneira
relacional na gravação do banco de dados, e consegue
fazer o caminho inverso sem perder informação.
Mapeamento OR, como?

O mapeamento OR tem 3 componentes

Modelo Orientado a objetos, que é o modelo em que
os dados estão representados na aplicação,
 Persistência Física, o modelo relacional em que os
dados serão armazenados.
 Persistência Lógica, que traduz o modelo o.o. para a
maneira que eles serão armazenados na persistência
física, e vice-versa.
Hibernate



O Hibernate é uma das soluções mais difundidas para
Mapeamento OR em Java. (Outras também famosas
são OJB, JDO e o Toplink).
Ele está sob a LGPL, ou seja, ele pode ser um usado
em código aberto e projetos comerciais.
Usam o Hibernate em seus projetos: Sony, AT&T, PwC,
Cisco... entre outras empresas.
Mapeamento OR em Hibernate


O hibernate isola o aplicativo de contato direto com o
banco de dados, servindo como ponte entre os dois
sistemas. E a melhor parte é que não possui chamadas
SQL misturadas ao código Java
Ao contrário de outros modelos de mapeamento OR, o
hibernate não é intrusivo. Ou seja, ele não obriga o
programado a estender uma classe dele no seu
aplicativo.
Mapeamento OR em Hibernate



No Hibernate temos que criar um arquivo de mapeamento
que serve como o modelo da persistência lógica.
Nele a classe o.o. é descrita de maneira pré-determinada
pelo Hibernate, e assim ele monta um b.d. relacional
consistente para aquela estrutura o.o.
E o arquivo de mapeamento é utilizado para os padrões
de escrita e consulta.
Persistência de Dados
em Hibernate

Podemos dividir a persitência de dados do
Hibernate em dois tipos:
 Persistência
de objetos simples
 Persistência
de coleções
Vantagens

Todo objeto a ser persistido pelo Hibernate precisa ter
um campo ID, ou chave primária.

Apesar de desnecessário no aplicativo, este campo ID
irá dar a unicidade do objeto no banco de dados, e irá
garantir a sua persistência.
Persistência de Dados:
Objetos Simples

Objetos que podem ser persistidos:
 Todos os tipos primitivos de java

Os objetos gerados pelas classes do pacote
java.lang (equivalência a tipos primitivos do B.D.)
 As
classes: java.util.Calendar, java.util.Date,
java.sql.Date, java.sql.Time, java.sql.Timestamp.
Persistência de Dados:
Objetos Simples

...
 As
classes: java.util.Calendar, java.util.Date,
java.sql.Date, java.sql.Time,
java.sql.Timestamp.
E
todas as classes declaradas como
persistentes, elas serão iguais á uma chave
estrangeira em um B.D. relacional
Persistência de Dados:
Objetos Simples, exemplo

Classe
public class
private
private
private
CD {
String nome;
String artista;
java.util.Date lancamento;
public CD() {
}
public String getNome(){
return ID;
}
public void setNome(int nome){
this.nome = nome;
}
// Sets e Gets
public java.util.Date getNascimento(){
return nascimento;
}
public void setNascimento(java.util.Date lancamento) {
this.lancamento = lancamento;
}
Persistência de Dados:
Objetos Simples, exemplo

Arquivo de mapeamento da classe (CD.hbm.xml)
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernatemapping.dtd">
<hibernate-mapping>
<class name="Amigo" table="amigo">
<id name="nome" column="nome" type="string">
<generator class="assigned"/>
</id>
<property name="artista" type="string"/>
<property name="lancamento" type="date"/>
</class>
</hibernate-mapping>
Persistência de Dados:
Coleções

Apesar de mapear coleções, cada coleção
é mapeada de maneira diferente. Vamos
ver como persistir um array e um map.
Persistência de Dados:
Coleções: Array
<array name="teste"
table="Teste"
cascade="all">
<key column="teste_ID"/>
<index column="I"/>
<many-to-many
column="teste_ID"
class="org.hibernate.Foo"/>
</array>
Persistência de Dados:
Coleções: Map
<map name="holidays"
table="holidays" schema="dbo"
order-by="hol_name asc">
<key column="id"/>
<index column="hol_name"
type="string"/>
<element column="hol_date"
type="date"/>
</map>
HQL
Hibernate Query Language


Para fazer consultas ao banco o Hibernate usa HQL,
que apesar do nome, é inteiramente orientado a objetos,
entendendo noções como herança e polimorfismo.
Ex:
select nome
from eg.CD as cd
join cd.nome as "Ventura"
Persistência de Heranças

Existem 3 estratégias para mapeamento de heranças:
 Por
Hierarquia
 Por
Subclasse
 Por
Classe Concreta
Referências



Home Page do Hibernate:
 http://www.hibernate.org
Tutorial
 http://www.roseindia.net/hibernate/index.shtml
Mapeamento OR
 http://en.wikipedia.org/wiki/Object-relational_mapping
FIM
Download