Professional Documents
Culture Documents
FernandoLozano http://www.lozano.eti.br
ConsultorIndependente Prof.FaculdadesUniABEU Prof.SENAC EditorAdjuntodaRevistaJavaMagazine
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
Pag. 2
Agenda
Pag. 3
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
Pag. 4
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
Pag. 5
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)
Pag. 6
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
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
Pag. 9
Otimizao de SQL
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?
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!
Pag.
OQL x SQL
SQL necessita de muitos joins: select nome from produto p, venda v where p.id = v.produto
OQL pode utilizar operadores de conjunto: select v.cliente from vendas v, in v.produtos p where sum(p.valor) > 10000
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
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.
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.
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
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
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.
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.
Referncias
Mapeamento Objeto/Relacional
CMP/CMR
java.sun.com/products/ejb/index.jsp www.onjava.com/pub/a/onjava/2001/09/19/ejbql.html
JDO
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
Pag.