Mdulo III Camada de Persistncia Prof Ismael H

  • Slides: 27
Download presentation
Módulo III Camada de Persistência Prof. Ismael H F Santos April 05 Prof. Ismael

Módulo III Camada de Persistência Prof. Ismael H F Santos April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 1

Ementa n Modulo III – Camada de Persistência n n n April 05 Persistência

Ementa n Modulo III – Camada de Persistência n n n April 05 Persistência de Objetos Mecanismo de Persistência Padrões de Persistência Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 2

POO-Java April 05 Persistência de Objetos Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio.

POO-Java April 05 Persistência de Objetos Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 3

Objetos Transientes x Persistentes n Os objetos de um sistema podem ser classificados em

Objetos Transientes x Persistentes n Os objetos de um sistema podem ser classificados em persistentes e transientes. n Objetos transientes: existem somente na memória principal. n n Objetos de controle e objetos de fronteira. Objetos persistentes: têm uma existência que perdurante várias execuções do sistema. n n April 05 Precisam ser armazenados quando uma execução termina, e restaurados quando uma outra execução é iniciada. Tipicamente objetos de entidade. Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 4

Persistência de Objetos n Por que não Bancos de Dados OO? n Tipos de

Persistência de Objetos n Por que não Bancos de Dados OO? n Tipos de dados e modelo de objetos diferentes da linguagem de programação n Estruturas de dados otimizadas para disco são diferentes as estruturas otimizadas para memória n Bancos OO ainda não são tão maduros quanto os relacionais em respeito a recoverabilidade, segurança, performance e distribuição April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 5

Persistência de Objetos n Porque Bancos de Dados Relacionais ? n Têm se mostrado

Persistência de Objetos n Porque Bancos de Dados Relacionais ? n Têm se mostrado bastante eficiêntes, o que levou a uma boa aceitação do mercado n Algumas aplicações utilizam-se de Stored Procedures e Triggers para execução de regras de negócio n Atualmente grande parte da Aplicações utilizam e ou integram-se por meio de um Banco de dados Relacional April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 6

POO-Java April 05 Mecanismos de Persistência de Objetos Prof. Ismael H. F. Santos -

POO-Java April 05 Mecanismos de Persistência de Objetos Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 7

Componentes de um Mecanismo de Persistência n Mapeamento OO/Relacional n Linguagem de Consulta n

Componentes de um Mecanismo de Persistência n Mapeamento OO/Relacional n Linguagem de Consulta n API de acesso April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 8

Componentes de um Mecanismo de Persistência n Mapeamento OO/Relacional n Um modelo OO é

Componentes de um Mecanismo de Persistência n Mapeamento OO/Relacional n Um modelo OO é semanticamente mais rico do que um modelo Relacional n Vários modelos Relacionais são possíveis para um mesmo modelo OO n Objetivos de performance e confiabilidade podem levar a mapeamentos “degenerados”, semelhantes a bancos relacionais não normalizados April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 9

Mapeamento OO-Relacional n SQL e Java n SQL é a linguagem utilizada para interagir

Mapeamento OO-Relacional n SQL e Java n SQL é a linguagem utilizada para interagir com o Banco de Dados Relacional. Em java utilizamos a API JDBC para execução de comandos SQL. Embora essa implementação seja eficaz, deixa a aplicação sensível a erros e dificulta as rotinas de testes n Modelo OO e o Modelo Relacional n OO e Relacional são tecnologias conceitualmente diferentes. Um bom Design OO pode não ser um bom Modelo Relacional. Muitas vezes acabamos sacrificando o modelo OO por um melhor modelo Relacional n Solução ideal n Ter os conceitos de OO representados no modelo relacional. Modelo OO independente da implementação Relacional. Aproveitando assim o melhor de cada tecnologia. MOR parece ser então a melhor solução para o problema ! April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 10

Mapeamento OO-Relacional n MOR é uma técnica que mapeia Objetos à tabelas no banco

Mapeamento OO-Relacional n MOR é uma técnica que mapeia Objetos à tabelas no banco de dados, levando conceitos fundamentais de OO para modelo relacional n Características de soluções MOR n Dirty Checking e Transitive Persistence n Lazy Fetching n Outer Join Fetching n Estratégias básicas de mapeamento de Herança n Com MOR temos n Transparência na camada de persistência n Um melhor ambiente para execução de rotinas de testes n Desenvolvedor concentrado mais nas regras de negócio e menos no código relacionado a persistênca n Uma estratégia mais robusta quanto a mudanças nos modelos April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 11

Componentes de um Mecanismo de Persistência n Linguagem de Consulta n Postergar gravações até

Componentes de um Mecanismo de Persistência n Linguagem de Consulta n Postergar gravações até o final das transações n n n Inserir/atualizar/deletar menos registros Utilizar apenas as colunas afetadas Fim dos problemas de nível de isolamento de transações Lock otimista realizado pelo mecanismo de persistência Problema: quando realizar leituras n n April 05 No acesso a uma propriedade do objeto? Carga antecipada de objetos relacionados? Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 12

Componentes de um Mecanismo de Persistência n O grande avanço dos bancos relacionais em

Componentes de um Mecanismo de Persistência n O grande avanço dos bancos relacionais em relação às tecnologias anteriores (rede, hierárquica, ISAM) foi a linguagem de consulta declarativa Utilizar apenas o grafo de objetos é reverter para consultas realizadas de forma procedural n Mas um modelo OO não é um modelo Relacional – as consultas não são realizadas em termos de junções (joins), produtos cartesianos e projeções! n April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 13

OQL x SQL necessita de muitos joins: select nome from produto p, venda v

OQL x SQL necessita de muitos joins: select nome from produto p, venda v where p. id = v. produto n OQL pode utilizar o grafo de objetos: select v. produto. nome from venda v n OQL pode utilizar operadores de conjunto: select v. cliente from vendas v, in v. produtos p where sum(p. valor) > 10000 April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 14

Componentes de um Mecanismo de Persistência n API de acesso n Fornece os métodos

Componentes de um Mecanismo de Persistência n API de acesso n Fornece os métodos para recuperação e atualização de objetos persistência n APIs intrusivas: n n APIs transparentes: n April 05 Exigem que as classes estendam uma classe ou implementem uma interface Utilizam aspectos, manipulação de byte-codes ou pré-processamento para modificar dinamicamente as classes e inserir chamadas ao mecanismo de persistência Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 15

Componentes de um Mecanismo de Persistência n API de acesso n Basicamente, inserem um

Componentes de um Mecanismo de Persistência n API de acesso n Basicamente, inserem um objeto persistente no contexto de uma transação e informam quando a transação é encerrada n Fornecem meios de recuperar objetos persistentes, mas também é possível utilzar os métodos get. XXX dos próprios objetos n Em geral não há métodos explícitos para “gravar”, mas pode haver um factory para criar instâncias persistentes n Na prática, o desenvolvedor usa mais a API das suas classes do que do mecanismo de persistência April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 16

POO-Java April 05 Padrões de Persistência de Objetos em Java Prof. Ismael H. F.

POO-Java April 05 Padrões de Persistência de Objetos em Java Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 17

Padrões de Persistência em Java n Component-based approach n EJB Entity. Beans CMP (Container

Padrões de Persistência em Java n Component-based approach n EJB Entity. Beans CMP (Container Managed Persistence) n BMP (Bean Managed Persistence) n n Object/relational approach n JDO – Java Database Object n Hibernate April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 18

CMP e BMP n API intrusiva, considera que um objeto persistente é n n

CMP e BMP n API intrusiva, considera que um objeto persistente é n n antes disso um componente distribuído (remoto) Exige o uso de um servidor de aplicações Bastante maduro, com recursos avançados de otimização e gerenciamento na maioria dos produtos disponíveis no mercado Curva de aprendizado bastante longa O padrão atual (2. 1) peca por não especificar como é o mapeamento OO-Relacional, gerando dependência em relação ao servidor de aplicação (descritores proprietários) April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 19

BMP x CMP April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br

BMP x CMP April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 20

CMP e BMP n Tem má fama no mercado por causa de limitações da

CMP e BMP n Tem má fama no mercado por causa de limitações da versão 1. x, que não tinha recursos para relacionamentos entre Entity Beans n A versão 3. 0 é baseada no fato de que objetos persistentes não são expostos para a camada de apresentação (cliente) no modelo MVC n Ficará semelhante ao Hibernate e ao JDO n A nova versão também terá um padrão para o mapeamento OO/Relacional, compartilhado com o JDO 2. 0 April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 21

JDO n Criado como alternativa ao CMP para aplicações que não rodam no servidor

JDO n Criado como alternativa ao CMP para aplicações que não rodam no servidor de aplicações n Mas também é bem-integrado em alguns servidores de aplicações n API não intrusiva, diferentes implementações utilizam manipulação de byte-codes ou pré-processamento n O padrão atual peca por não definir o mapeamento OO/Relacional, mas o problema será resolvido na versão 2. 0 da especificação April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 22

JDO Architecture April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 23

JDO Architecture April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 23

JDO Byte Code Enhancement April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio.

JDO Byte Code Enhancement April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 24

JDO Development Process April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br

JDO Development Process April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 25

Hibernate n Não é padrão do JCP, mas é quase um padrão de n

Hibernate n Não é padrão do JCP, mas é quase um padrão de n n fato do mercado Ganhou muito espaço por causa do “preconceito” contra EJBs e da padronização incompleta do CMP e do JDO A versão 3. 0 está melhorando muito a documentação e recursos de otimização Incorporado ao JBoss 4. 0 como base do seu mecanismo CMP/CMR Famoso pela sua flexibilidade em termos de linguagem de consulta (HQL) e API April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 26

Hibernate APIs April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 27

Hibernate APIs April 05 Prof. Ismael H. F. Santos - ismael@tecgraf. puc-rio. br 27