Upload
buinga
View
214
Download
0
Embed Size (px)
Citation preview
Globalcode – Open4Education1
Arquiteturas de Persistência com Java
Renato [email protected]
http://diamond-powder.blogspot.com
Globalcode – Open4Education2
Agenda
>Old School: SQL & JDBC
>ORM: Mapeamento Objeto Relacional
>JPA: Padrão para ORM
>Dificuldades na Adoção de ORM
>Persistência com EJB
>Conclusões
Globalcode – Open4Education3
Agenda
>Old School: SQL & JDBC
>ORM: Mapeamento Objeto Relacional
>JPA: Pardão para ORM
>Dificuldades na Adoção de ORM
>Persistência com EJB
>Conclusões
Globalcode – Open4Education4
Old School: SQL & JDBC
>SQL: Fácil e Confiável
>SQL é muito popular
>Diversos profissionais falam SQL
>Desenvolvedores
>Analistas
>DBAs
>Controle sobre o que acontece no BD
Edgar Frank Codd
Globalcode – Open4Education5
Old School: SQL & JDBC
>JDBC
>Padrão de conectividade com BD Relacionais
>Existe desde o Java 1.1
>Suporta
>Comandos SQL
>Procedures
>Metadados
>A 1ª. API de muitos programadores Java.
>Drivers JDBC até para BD não relacionais.
Globalcode – Open4Education6
Old School: SQL & JDBC
>JDBC
API JDBC (java.sql)
Aplicação Java
driver tipo 1 driver tipo 2
RDBMS
driver tipo 3 driver tipo 4
driver ODBC client nativo
broker
Globalcode – Open4Education7
Old School: SQL & JDBC
>Desvantagens:
>Baixa produtividade
>Baixa portabilidade de BD
>Cada BD tem um sabor de SQL
>Mudança no BD = manutenção no SQL
>Mudança de nomenclatura = manut. no SQL
Globalcode – Open4Education8
Agenda
>Old School: SQL & JDBC
>ORM: Mapeamento Objeto Relacional
>JPA: Pardão para ORM
>Dificuldades na Adoção de ORM
>Persistência com EJB
>Conclusões
Globalcode – Open4Education9
ORM: Mapeamento Objeto Relacional>Mark L. Fussel 1997 - Foundations of ObjectRelational Mapping
>www.chimu.com/publications/objectRelational/
Pure Relational
Light Object Mapping
Medium Object Mapping
Full Object Mapping
Object Server Banco de dados OO
Soluções ORM consagradas
design pattern Data Acces Object (DAO)
tradição Visual Basic, Delphi, Oracle Forms
SQL automático, cache local
transparênciaherançapolimorfismocomposições“persistence byreachability”
Globalcode – Open4Education10
ORM: Mapeamento Objeto Relacional
Ligth/Medium
/FullO
bjectMapping
RDBMSJD
BC
objetos
objetos
statements
resultsets
Globalcode – Open4Education11
ORM: Mapeamento Objeto Relacional
>Alguns Sabores de ORM em Java
>Hibernate (Core)
>iBatis
>Java Persistence API – JPA (JSR 220/317)
>Java Data Objects - JDO (JSR 243)> abstrações para diversos tipos de repositórios, além do modelo JDBC / banco relacional
>Entity Bean CMP (JSR 19/153) †
Globalcode – Open4Education12
ORM: Mapeamento Objeto Relacional>Modelo OO : Modelo Relacional
>Classe : Tabela
>Objeto : Linha
>Atributo : Coluna
>Método : N/A
>Associação : Chave Estrangeira
>Herança : 3 modelagens clássicas
>Single Table
>Joined Subclasses
>Table per Class
>Mapeamento via XML e/ou via Annotations
Globalcode – Open4Education13
ORM: Exemplo com Annotations JPA
Globalcode – Open4Education14
Agenda
>Old School: SQL & JDBC
>ORM: Mapeamento Objeto Relacional
>JPA: Pardão para ORM
>Dificuldades na Adoção de ORM
>Persistência com EJB
>Conclusões
Globalcode – Open4Education15
JPA: Padrão para ORM
Aplicação Java
JPA
Provedor JPA
JDBC
Driver JDBC
RDBMS
Top Link EssentialsHibernate Entity Manager
BEA KodoApache Open JPA
MySQLPostgresOracleJava DB...
Globalcode – Open4Education16
JPA: Padrão para ORM
Aplicação Java
JPA
Provedor JPA
JDBC
Driver JDBC
RDBMS
Todos os provedores
obedecem ao padrão de API e
de técnicas de mapeamento
Cada provedor pode oferecer featuresproprietárias
Globalcode – Open4Education17
Agenda
>Old School: SQL & JDBC
>ORM: Mapeamento Objeto Relacional
>JPA: Pardão para ORM
>Dificuldades na Adoção de ORM
>Persistência com EJB
>Conclusões
Globalcode – Open4Education18
Dificuldades na Adoção de ORM
>O DBA não quer, os comandos SQL já estão otimizados...
> otimização de SQL deve ser a exceção, e não a regra;
> JPA permite o uso de queries nativas;
> Hibernate permite o uso de comandos DML nativos;
DBA
Programador Java
Globalcode – Open4Education19
Dificuldades na Adoção de ORM>Desconfiamos do SQL gerado automaticamente ...
> acompanhe o SQL gerado
> via logs
> via ferramentas – ex: Hibernate Tools
Globalcode – Open4Education20
Dificuldades na Adoção de ORM>O banco de dados utiliza stored procedures...
> de novo, stored procedures devem ser a exceção> é viável conviver com algumas chamadas a procedures> as procedures são a regra geral ?
> seu fornecedor de banco de dados agradece !> seu gerente de TI já ouviu falar em TCO ?
Globalcode – Open4Education21
Dificuldades na Adoção de ORM
>JDBC direto é mais performático ...
>Já tivemos problemas de desempenho com frameworkORM ...
> Estude melhor seu framework:
>Mecanismos de Cache;
>Estratégias de recuperação Lazy / Eager
Globalcode – Open4Education22
Dificuldades na Adoção de ORM
>O Banco de Dados estámal normalizado, não encaixa em nosso modelo de classes ...
> O Hibernate, por exemplo, possui vários recursos para conviver com bancos de dados mal normalizados;
> Distorcer um pouco o modelo de classes não é proibido;
>Errar é humano, insistir no erro... Normalize seu banco de dados !
Globalcode – Open4Education23
Agenda
>Old School: SQL & JDBC
>ORM: Mapeamento Objeto Relacional
>JPA: Pardão para ORM
>Dificuldades na Adoção de ORM
>Persistência com EJB
>Conclusões
Globalcode – Open4Education24
Persistência com EJB
>EJB não é uma API de persistência
>EJB é um modelo para componentes de negócio distribuídos
>Vários tipos de aplicações clientes podem utilizar as mesmas regras de negócio;
>Infra-estrutura do Container de EJBs>Segurança, Controle Transacional, Escalabilidade
>Acesso a Recursos Computacionais Corporativos
>Padrão de Mercado para Componentes de Negócio
Globalcode – Open4Education25
serviço de
diretóriosLDAP
Persistência com EJB
>EJBs são componentes de negócio que funcionam em um Middleware, o container de EJBs
containerde
EJBs
EIS
RDBMS
container web
webbrowser
servidor de
mensagensJMS JCA
HTTP
RMI JNDI
RDBMSRDBMS
JDBCoutras
palataformas SOAP
RMI/IIOP
REST
Globalcode – Open4Education26
Persistência com EJB
>Evite utilizar seu banco de dados como Middlewarede integração
RDBMS
Aplicação X Aplicação Y
Aplicação Z
Globalcode – Open4Education27
Persistência com EJB
>Evite utilizar seu banco de dados como Middlewarede integração
> EJBs suportam vários mecanismos para integrar com aplicações, mesmo que externas à rede local
containerde
EJBs
JMS
SOAP
REST
JCA
RMI
Globalcode – Open4Education28
servidor de
mensagens
Persistência com EJB
>Evite utilizar seu banco de dados como Middlewarede integração
> Containers de EJBs possuem gerenciadores de transações distribuídas (two-phase commit)
containerde
EJBs
EIS
RDBMS
JMSJCA
RDBMSRDBMS
JDBC
Globalcode – Open4Education29
Persistência com EJB
>Evite utilizar seu banco de dados como Middlewarede integração
>Containers EJB >= 3 oferecem suporte JPA embutido
containerde
EJBs RDBMSRDBMS
RDBMS
JPA JDBC
Globalcode – Open4Education30
Persistência com EJB
>Evite utilizar seu banco de dados como Middlewarede integração
>EJBs minimizam a necessidade de Stored Procedures
Aplicação X
Aplicação Y
Aplicação Z
Aplicação W
containerde
EJBs RDBMSRDBMS
RDBMS
JPA JDBC
Globalcode – Open4Education31
Persistência com EJB
>Arquiteturas com EJBs são S.O.A. !
>SOA = Service Oriented Architecture>Arquiteturas Orientadas a Serviços>Serviços:
>possuem fortes contratos de software: entradas, saídas, exceções;>são encapsulados: expõem apenas comportamentos definidos no contrato;>são fracamente acoplados, podem ser substituídos desde que mantenham o contrato;
>EJBs podem ser facilmente transformados em WebServices
Globalcode – Open4Education32
Agenda
>Old School: SQL & JDBC
>ORM: Mapeamento Objeto Relacional
>JPA: Pardão para ORM
>Dificuldades na Adoção de ORM
>Persistência com EJB
>Conclusões
Globalcode – Open4Education33
Conclusões
>Onde Estávamos:>Arquiteturas “Pure-Relational” ou “Data-Driven”
>Baixa produtividade “old-school”
>Banco de Dados = middleware de integração
>Stored Procedures = camada de serviços
>Dependência de fornecedor de banco de dados
Globalcode – Open4Education34
Conclusões
>Aqui Estamos:
> Maturidade de Frameworks ORM, apesar de resistência cultural
> Aumento da produtividade
> Potencial dependência de Frameworks ORM
> SQL / Procedures / JDBC considerados para situações muito particulares
> Middlewares de Integração (ex: EJB Container)
> S.O.A.
Globalcode – Open4Education35
Conclusões
>Aqui Estamos:>Bancos Relacionais mantém sua importância no ambiente corporativo, porém as arquiteturas “Pure-Relational” ou “Data-Driven” estão obsoletas;>Arquiteturas baseadas em ORM e EJB/SOA diminuem o TCO e são mais ágeis e competitivas para reagir às evoluções do negócio.
Globalcode – Open4Education36
Conclusões
> Para Onde ?>Bancos de Dados OO ?
>Web 3.0 ?> Web Semântica
> RDF / SPARQL
Globalcode – Open4Education37
Para refletir...
> Você está em um ambiente de desenvolvimento:
>“old-school” ?
>“pure-relational” ?
>“data-driven” ?
> E está se conformando ?
Globalcode – Open4Education38
Para refletir...
> Desenvolvedor:
> os ventos do mercado estão a seu favor !
> faça alguma coisa !
Globalcode – Open4Education39
Perguntas e Respostas