hibernate apresentação

24
Hibernate Apresentação Sidney Vilaça

Upload: irving

Post on 14-Jan-2016

39 views

Category:

Documents


3 download

DESCRIPTION

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. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Hibernate Apresentação

HibernateApresentação

Sidney Vilaça

Page 2: Hibernate Apresentação

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.

Page 3: Hibernate Apresentação

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.

Page 4: Hibernate Apresentação

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.

Page 5: Hibernate Apresentação

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.

Page 6: Hibernate Apresentação

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.

Page 7: Hibernate Apresentação

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.

Page 8: Hibernate Apresentaçã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.

Page 9: Hibernate Apresentação

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.

Page 10: Hibernate Apresentação

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.

Page 11: Hibernate Apresentação

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.

Page 12: Hibernate Apresentação

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

Page 13: Hibernate Apresentação

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.

Page 14: Hibernate Apresentação

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.

Page 15: Hibernate Apresentação

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

Page 16: Hibernate Apresentação

Persistência 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;}

}

Page 17: Hibernate Apresentação

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>

Page 18: Hibernate Apresentação

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.

Page 19: Hibernate Apresentação

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>

Page 20: Hibernate Apresentação

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>

Page 21: Hibernate Apresentação

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"

Page 22: Hibernate Apresentação

Persistência de Heranças

Existem 3 estratégias para mapeamento de heranças:

Por Hierarquia

Por Subclasse

Por Classe Concreta

Page 23: Hibernate Apresentação

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

Page 24: Hibernate Apresentação

FIM