You are on page 1of 24

Persistncia de Dados em

Nilson de Souza Rego Jr.

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.

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.
3

Persistncia de Dados

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

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.

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.

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.
7

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.
8

Diagrama

MODELO ORIENTADO A OBJETOS

PERSITNCIA LGICA

PERSITNCIA FSICA

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.

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 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.

11

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.

12

Persistncia de Dados em Hibernate

Podemos dividir a persitncia de dados do Hibernate em dois tipos:

Persistncia de objetos simples Persistncia de colees

13

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.

14

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.
15

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

16

Persistncia de Dados: Objetos Simples, exemplo

Classe
CD { String nome; String artista; java.util.Date lancamento;
}

public class private private private

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

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>

18

Persistncia de Dados: Colees

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

19

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>
20

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>
21

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"

22

Persistncia de Heranas

Existem 3 estratgias para mapeamento de heranas:

Por Hierarquia Por Subclasse Por Classe Concreta

23

Referncias

Home Page do Hibernate:

http://www.hibernate.org
http://www.roseindia.net/hibernate/index.sht ml http://en.wikipedia.org/wiki/Objectrelational_mapping

Tutorial

Mapeamento OR

24

You might also like