Nilson de Souza Rego Jr.1 Persistência de Dados em.
-
Upload
rui-capistrano-lobo -
Category
Documents
-
view
217 -
download
0
Transcript of Nilson de Souza Rego Jr.1 Persistência de Dados em.
2
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.
3
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.
4
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.
5
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.
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 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.
7
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.
8
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.
10
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.
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 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.
12
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.
13
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
14
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.
15
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.
16
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
17
Persistência de Dados:Objetos Simples, exemplo Classepublic 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
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>
19
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.
20
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>
21
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>
22
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"
23
Persistência de Heranças Existem 3 estratégias para mapeamento
de heranças:
Por Hierarquia
Por Subclasse
Por Classe Concreta
24
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