Você está na página 1de 24

Nilson de Souza Rego Jr.

1
Persistncia de Dados em

2
Tpicos
Conceitos bsicos: banco de dados(b.d),
orientao a objetos(o.o.) ...
Persistncia de dados e persistncia de
objetos e mapeamento O/R.
O que o Hibenate?
Exemplo do Hibernate.
Persistncia de dados em Hibernate.

3
Banco de Dados
Bancos de dados (ou bases de dados) so
arquivos ou sistemas com uma estrutura
regular que organizam informaes.

Um Banco de Dados Relacional um
sistema de armazenamento de dados
baseado nos relacionamentos entre
elementos de dados buscando uma
normalizao (sem redundncias) dos
dados.
4
Persistncia de Dados

A Persistncia de Dados consiste no
armazenamento confivel e coerente das
informaes em um sistema de
armazenamento de dados.
5
Persistncia de Objetos

A Persistncia de Objetos o
armazenamento consistente de objetos de
uma aplicao o.o. para que estes objetos
existam em diferentes execues de
diferentes aplicaes.

6
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 tm grandes
desvantagens em relao aos relacionais.
O padro vigente nas empresas o banco de
dados relacional, e sem uma perspectivas de
mudana.
Como voc v as alternativas aos bancos de dados
relacionais, como bancos de dados OO?
Ns no vemos
-Gavin King, criador do Hibernate.
7
Mapeamento OR, a soluo.
O Mapeamento Objeto-Relacional (OR) a
soluo para o problema.

O Mapeamento OR uma tcnica de
desenvolvimento que consiste em
representar o objeto de maneira relacional
na gravao do banco de dados, e
consegue fazer o caminho inverso sem
perder informao.
8
Mapeamento OR, como?
O mapeamento OR tem 3 componentes

Modelo Orientado a objetos, que o modelo
o.o. em que os dados esto representados na
aplicao,
Persistncia Fsica, o modelo relacional em
que os dados sero armazenados.
Persistncia Lgica, que traduz o modelo o.o.
para a maneira que eles sero armazenados
na persistncia fsica, e vice-versa.
9
Diagrama
MODELO
ORIENTADO
A OBJETOS
PERSITNCIA
LGICA
PERSITNCIA
FSICA
10
Hibernate
O Hibernate uma das solues mais
difundidas para Mapeamento OR em Java.
(Outras tambm famosas so OJB, JDO e
o Toplink).
Ele est sob a LGPL, ou seja, ele pode ser
um usado em cdigo aberto e projetos
comerciais.
Usam o Hibernate em seus projetos:
Sony, AT&T, PwC, Cisco... entre outras
empresas.
11
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 no a chamadas SQL
misturadas ao cdigo Java
Ao contrrio de outros modelos de
mapeamento OR, o hibernate no
intrusivo. Ou seja, ele no obriga o
programado a estender uma classe dele
no seu aplicativo.
12
Mapeamento OR em Hibernate
No Hibernate temos que criar um arquivo
de mapeamento que serve como o modelo
da persistncia lgica.
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 padres de escrita e consulta.
13
Persistncia de Dados
em Hibernate
Podemos dividir a persitncia de dados do
Hibernate em dois tipos:

Persistncia de objetos simples

Persistncia de colees

14
Persistncia de Dados:
Objetos Simples
Todo objeto a ser persistido pelo
Hibernate precisa ter um campo ID, ou
chave primria.

Apesar de desnecessrio no aplicativo,
este campo ID ir dar a unicidade do
objeto no banco de dados, e ir garantir a
sua persistncia.

15
Persistncia de Dados:
Objetos Simples
Objetos que podem ser persistidos:
Todos os tipos primitivos de java

Os objetos gerados pelas classes do pacote
java.lang (equivalncia a tipos primitivos do
B.D.)

As classes: java.util.Calendar, java.util.Date,
java.sql.Date, java.sql.Time,
java.sql.Timestamp.
16
Persistncia 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 sero iguais uma chave
estrangeira em um B.D. relacional
17
Persistncia de Dados:
Objetos Simples, exemplo
Classe

public class CD {
private String nome;
private String artista;
private 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;
}
}
18
Persistncia 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/hibernate-mapping.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>
19
Persistncia de Dados:
Colees

Apesar de mapear colees, cada coleo
mapeada de maneira diferente. Vamos
ver como persistir um array e um map.


20
Persistncia de Dados:
Colees: 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>
21
Persistncia de Dados:
Colees: 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>

22
HQL
Hibernate Query Language
Para fazer consultas ao banco o Hibernate
usa HQL, que apesar do nome,
inteiramente orientado a objetos,
entendendo noes como herana e
polimorfismo.
Ex:
select nome
from eg.CD as cd
join cd.nome as "Ventura"
23
Persistncia de Heranas
Existem 3 estratgias para mapeamento
de heranas:

Por Hierarquia

Por Subclasse

Por Classe Concreta
24
Referncias
Home Page do Hibernate:
http://www.hibernate.org
Tutorial
http://www.roseindia.net/hibernate/index.sht
ml
Mapeamento OR
http://en.wikipedia.org/wiki/Object-
relational_mapping

Você também pode gostar