Persistência de Dados em - IME-USP

Propaganda
Persistência de Dados em
Nilson de Souza Rego Jr.
1
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.

2
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.
3
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.
4
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.
5
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.

“Como você vê as alternativas aos bancos de dados
relacionais, como bancos de dados OO? “
“Nós não vemos”
-Gavin King, criador do Hibernate.
6
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.
7
Mapeamento OR, como?

O mapeamento OR tem 3 componentes



Modelo Orientado a objetos, que é o modelo
o.o. 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.
8
Diagrama
MODELO
ORIENTADO
A OBJETOS
PERSITÊNCIA
LÓGICA
PERSITÊNCIA
FÍSICA
9
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.

10
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 a 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.

11
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.

12
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
13
Persistência de Dados:
Objetos Simples

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.
14
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.
15
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
16
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;
}
}
17
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/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>
18
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.
19
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>
20
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>
21
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"

22
Persistência de Heranças

Existem 3 estratégias para mapeamento
de heranças:

Por Hierarquia

Por Subclasse

Por Classe Concreta
23
Referências

Home Page do Hibernate:


Tutorial


http://www.hibernate.org
http://www.roseindia.net/hibernate/index.sht
ml
Mapeamento OR

http://en.wikipedia.org/wiki/Objectrelational_mapping
24
Download