You are on page 1of 22

Persistncia Objeto-Relacional com Java

FernandoLozano http://www.lozano.eti.br
ConsultorIndependente Prof.FaculdadesUniABEU Prof.SENAC EditorAdjuntodaRevistaJavaMagazine

2004 Fernando Lozano, http://www.lozano.eti.br

Persistncia Objeto-Relacional com Java

Pag. 1

Sobre o Autor

Red Hat Certified Engineer LPI Certified Professional Level I Sair GNU/Linux Certified Professional IBM Certified Network Engineer IBM Certified DB2 Administrator & Developer Microsoft Certified Systems Engineer Microsoft Certified Solutions Developer Webmaster da Free Software Foundation Conselheiro do LPI Brasil Editor Adjunto da Revista Java Magazine Autor do Livro "Java em GNU/Linux" Ed. Alta Books www.altabooks.com.br

2004 Fernando Lozano, http://www.lozano.eti.br

Persistncia Objeto-Relacional com Java

Pag. 2

Agenda

Porque persistir Objetos? Componentes de um mecanismo de persistncia


Mapeamento OO/Relacional Linguagem de Consulta API de acesso CMP/CMR JDO Hibernate

Padres de persistncia do Java


2004 Fernando Lozano, http://www.lozano.eti.br

Persistncia Objeto-Relacional com Java

Pag. 3

Porque Persistir Objetos

Modelagem de negcios e processos baseados na UML Modelagem de sistemas (informaes, arquitetura de cdigo) Orientada a Objetos Adoo de design patterns OO Reduzir o gap entre o modelo conceitual e lgico dos sistemas (OO) e a tecnologia de armazenamento (Relacional) Maximizar o aproveitamento de conhecimento do profissional Java

2004 Fernando Lozano, http://www.lozano.eti.br

Persistncia Objeto-Relacional com Java

Pag. 4

Por que no Bancos OO?

Tipos de dados e modelo de objetos diferentes da linguagem de programao Estruturas de dados otimizadas para disco so diferentes as estruturas otimizadas para memria Bancos OO ainda no so to maduros quanto os relacionais em respeito a recoverabilidade, performance e distribuio

2004 Fernando Lozano, http://www.lozano.eti.br

Persistncia Objeto-Relacional com Java

Pag. 5

Persistncia OO x Servidores de Aplicao

Caches de objetivos agressivos e distribudos Delimitao de transaes Otimizao de comandos SQL em funo do cache e transaes A lgica de negcios que costumava estar no banco (triggers, stored procedures) migrada com vantagens para os objetos de negcios (EJBs)

2004 Fernando Lozano, http://www.lozano.eti.br

Persistncia Objeto-Relacional com Java

Pag. 6

Componentes de um Mecanismo de Persistncia

Mapeamento OO/Relacional Linguagem de Consulta API de acesso

2004 Fernando Lozano, http://www.lozano.eti.br

Persistncia Objeto-Relacional com Java

Pag. 7

Mapeamento OO/Relacional

Um modelo OO semanticamente mais rico do que um modelo Relacional Vrios modelos Relacionais so possveis para um mesmo modelo OO Objetivos de performance e confiabilidade podem levar a mapeamentos degenerados, semelhantes a bancos relacionais desnormatizados

2004 Fernando Lozano, http://www.lozano.eti.br

Persistncia Objeto-Relacional com Java

Pag. 8

OO x Relacional

Relacional

Entidades fortes e fracas Relaes 1/N, M/N e Chaves Estrangeiras Composio e Agregao Sets, Maps, Lists, Trees, ...

Java

2004 Fernando Lozano, http://www.lozano.eti.br

Persistncia Objeto-Relacional com Java

Pag. 9

Otimizao de SQL

Postergar gravaes at o final das transaes


Inserir/atualizar/deletar menos registros Utilizar apenas as colunas afetadas Fim dos problemas de nvel de isolamento de transaes Lock otimista realizado pelo mecanismo de persistncia No acesso a uma propriedade do objeto? Carga antecipada de objetos relacionados?

Quando realizar leituras


2004 Fernando Lozano, http://www.lozano.eti.br 10

Persistncia Objeto-Relacional com Java

Pag.

Linguagem de Consulta

O grande avano dos bancos relacionais em relao s tecnologias anteriores (rede, hierrquica, ISAM) foi a linguagem de consulta declarativa Utilizar apenas o grafo de objetos reverter para consultas realizadas de forma procedural Mas um modelo OO no um modelo Relacional no so realizadas em termos de junes (joins), produtos cartesianos e projees!

2004 Fernando Lozano, http://www.lozano.eti.br 11

Persistncia Objeto-Relacional com Java

Pag.

OQL x SQL

SQL necessita de muitos joins: select nome from produto p, venda v where p.id = v.produto

OQL pode utilizar o grafo de objetos: select v.produto.nome from venda v

OQL pode utilizar operadores de conjunto: select v.cliente from vendas v, in v.produtos p where sum(p.valor) > 10000

2004 Fernando Lozano, http://www.lozano.eti.br 12

Persistncia Objeto-Relacional com Java

Pag.

API de Acesso

Fornece os mtodos para recuperao e atualizao de objetos persistncia APIs intrusivas: Exigem que suas classes estendam uma classe ou implementem uma iterface APIs transparentes Utilizam aspectos, manipulao de byte-codes ou pr-processamento para modificar dinamicamente as classes e inserir chamadas ao mecanismo de persistncia

2004 Fernando Lozano, http://www.lozano.eti.br 13

Persistncia Objeto-Relacional com Java

Pag.

APIs de Acesso

Basicamente, inserem um objeto persistente no contexto de uma transao e informam quando a transao encerrada Fornecem meios de recuperar objetos persistentes, mas tambm possvel utilzar os mtodos getXXX dos prprios objetos Em geral no h mtodos explcitos para gravar, mas pode haver um factory para criar instncias persistentes Na prtica, o desenvolvedor usa mais a API das suas classes do que do mecanismo de persistncia
Persistncia Objeto-Relacional com Java 14 Pag.

2004 Fernando Lozano, http://www.lozano.eti.br

Padres de Persistncia do Java

CMP/CMR JDO Hibernate

2004 Fernando Lozano, http://www.lozano.eti.br 15

Persistncia Objeto-Relacional com Java

Pag.

CMP/CMR

API intrusiva, considera que um objeto persistente antes disso um componente distribudo (remoto) Exige o uso de um servidor de aplicaes Bastante maduro, com recursos avanados de otimizao e gerenciamento na maioria dos produtos disponveis no mercado Curva de aprendizado bastante longa O padro atual (2.1) peca por no especificar como o mapeamento OO/Relacional, gerando dependncia em relao ao servidor de aplicao (descritores proprietrios)
Persistncia Objeto-Relacional com Java 16 Pag.

2004 Fernando Lozano, http://www.lozano.eti.br

CMP/CMR

Tem m fama no mercado por causa de limitaes da verso 1.x, que no tinha recursos para relacionamentos entre Entity Beans A verso 3.0 baseada no fato de que objetos persistentes no so expostos para a camada de apresentao (cliente) no modelo MVC Ficar semelhante ao Hibernate e ao JDO A nova verso tambm ter um padro para o mapeamento OO/Relacional, compartilhado com o JDO 2.0

2004 Fernando Lozano, http://www.lozano.eti.br 17

Persistncia Objeto-Relacional com Java

Pag.

JDO

Criado como alternativa ao CMP para aplicaes que no rodam no servidor de aplicaes Mas tambm bem-integrado em alguns servidores de aplicaes API no intrusiva, diferentes implementaes utilizam manipulao de bytecodes ou prprocessamento O padro atual peca por no definir o mapeamento OO/Relacional, mas o problema ser resolvido na verso 2.0 da especificao

2004 Fernando Lozano, http://www.lozano.eti.br 18

Persistncia Objeto-Relacional com Java

Pag.

Hibernate

No padro do JCP, mas quase um padro de fato do mercado Ganhou muito espao por causa do preconceito contra EJBs e da padronizao incompleta do CMP e do JDO A verso 3.0 est melhorando muito a documentao e recursos de otimizao Incorporado ao JBoss 4.0 como base do seu mecanismo CMP/CMR Famoso pela sua flexibilidade em termos de linguagem de consulta e API
Persistncia Objeto-Relacional com Java 19 Pag.

2004 Fernando Lozano, http://www.lozano.eti.br

Concluses

No h ainda um mecanismo estabelecido como o nico padro, e provavelmente os trs indicados (alm alguns outros proprietrios, como o TopLink) permanecero durante longo tempo com seus nichos H uma convergncia natural nestes mecanismos, que ficam cada vez mais parecidos Qualquer das trs alternativas uma boa escolha, mas avalie com cuidado sua capacidade de otimizar o ambiente de produo S haver bom proveito se o desenvolvedor abandonar paradigmas do mundo relacional!
Persistncia Objeto-Relacional com Java 20 Pag.

2004 Fernando Lozano, http://www.lozano.eti.br

Referncias

Mapeamento Objeto/Relacional

www.chimu.com/publications/objectRelational www.objectarchitects.de/ObjectArchitects/orpatterns www.objectmatter.com/vbsf/docs/maptool/ormapping.html

CMP/CMR

java.sun.com/products/ejb/index.jsp www.onjava.com/pub/a/onjava/2001/09/19/ejbql.html

JDO

java.sun.com/products/jdo db.apache.org/ojb db.apache.org/ojb/docu/tutorials/jdo-tutorial.html www.jpox.org tjdo.sourceforge.net

Hibernate

www.hibernate.org www.systemmobile.com/articles/IntroductionToHibernate.html
2004 Fernando Lozano, http://www.lozano.eti.br 21 Persistncia Objeto-Relacional com Java Pag.

Perguntas

Dvidas: fernando@lozano.eti.br Palestras, artigos e Apostilas: www.lozano.eti.br Livro: Java em GNU/Linux www.altabooks.com.br

2004 Fernando Lozano, http://www.lozano.eti.br 22

Persistncia Objeto-Relacional com Java

Pag.

You might also like