1 / 24

Persistência de Dados em

Persistência de Dados em. 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.

iola
Download Presentation

Persistência de Dados em

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Persistência de Dados em Nilson de Souza Rego Jr.

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

  9. Diagrama MODELO ORIENTADO A OBJETOS PERSITÊNCIA LÓGICA PERSITÊNCIA FÍSICA

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

  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

More Related