hibernate apresentação

Post on 14-Jan-2016

39 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

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

HibernateApresentaçã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

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.

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.

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.

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.

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.

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.

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.

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.

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.

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

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.

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.

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

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;}

}

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>

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.

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>

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>

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"

Persistência de Heranças

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

Por Hierarquia

Por Subclasse

Por Classe Concreta

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

FIM

top related