arquiteturas de persistência com java · polimorfismo composições “persistence by ... >ejb...
TRANSCRIPT
![Page 1: Arquiteturas de Persistência com Java · polimorfismo composições “persistence by ... >EJB é um modelo para componentes de negócio distribuídos >Vários tipos de aplicações](https://reader031.vdocuments.pub/reader031/viewer/2022022615/5ba144b109d3f2c06a8bf3da/html5/thumbnails/1.jpg)
Globalcode – Open4Education1
Arquiteturas de Persistência com Java
Renato [email protected]
http://diamond-powder.blogspot.com
![Page 2: Arquiteturas de Persistência com Java · polimorfismo composições “persistence by ... >EJB é um modelo para componentes de negócio distribuídos >Vários tipos de aplicações](https://reader031.vdocuments.pub/reader031/viewer/2022022615/5ba144b109d3f2c06a8bf3da/html5/thumbnails/2.jpg)
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
![Page 3: Arquiteturas de Persistência com Java · polimorfismo composições “persistence by ... >EJB é um modelo para componentes de negócio distribuídos >Vários tipos de aplicações](https://reader031.vdocuments.pub/reader031/viewer/2022022615/5ba144b109d3f2c06a8bf3da/html5/thumbnails/3.jpg)
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
![Page 4: Arquiteturas de Persistência com Java · polimorfismo composições “persistence by ... >EJB é um modelo para componentes de negócio distribuídos >Vários tipos de aplicações](https://reader031.vdocuments.pub/reader031/viewer/2022022615/5ba144b109d3f2c06a8bf3da/html5/thumbnails/4.jpg)
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
![Page 5: Arquiteturas de Persistência com Java · polimorfismo composições “persistence by ... >EJB é um modelo para componentes de negócio distribuídos >Vários tipos de aplicações](https://reader031.vdocuments.pub/reader031/viewer/2022022615/5ba144b109d3f2c06a8bf3da/html5/thumbnails/5.jpg)
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.
![Page 6: Arquiteturas de Persistência com Java · polimorfismo composições “persistence by ... >EJB é um modelo para componentes de negócio distribuídos >Vários tipos de aplicações](https://reader031.vdocuments.pub/reader031/viewer/2022022615/5ba144b109d3f2c06a8bf3da/html5/thumbnails/6.jpg)
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
![Page 7: Arquiteturas de Persistência com Java · polimorfismo composições “persistence by ... >EJB é um modelo para componentes de negócio distribuídos >Vários tipos de aplicações](https://reader031.vdocuments.pub/reader031/viewer/2022022615/5ba144b109d3f2c06a8bf3da/html5/thumbnails/7.jpg)
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
![Page 8: Arquiteturas de Persistência com Java · polimorfismo composições “persistence by ... >EJB é um modelo para componentes de negócio distribuídos >Vários tipos de aplicações](https://reader031.vdocuments.pub/reader031/viewer/2022022615/5ba144b109d3f2c06a8bf3da/html5/thumbnails/8.jpg)
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
![Page 9: Arquiteturas de Persistência com Java · polimorfismo composições “persistence by ... >EJB é um modelo para componentes de negócio distribuídos >Vários tipos de aplicações](https://reader031.vdocuments.pub/reader031/viewer/2022022615/5ba144b109d3f2c06a8bf3da/html5/thumbnails/9.jpg)
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”
![Page 10: Arquiteturas de Persistência com Java · polimorfismo composições “persistence by ... >EJB é um modelo para componentes de negócio distribuídos >Vários tipos de aplicações](https://reader031.vdocuments.pub/reader031/viewer/2022022615/5ba144b109d3f2c06a8bf3da/html5/thumbnails/10.jpg)
Globalcode – Open4Education10
ORM: Mapeamento Objeto Relacional
Ligth/Medium
/FullO
bjectMapping
RDBMSJD
BC
objetos
objetos
statements
resultsets
![Page 11: Arquiteturas de Persistência com Java · polimorfismo composições “persistence by ... >EJB é um modelo para componentes de negócio distribuídos >Vários tipos de aplicações](https://reader031.vdocuments.pub/reader031/viewer/2022022615/5ba144b109d3f2c06a8bf3da/html5/thumbnails/11.jpg)
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) †
![Page 12: Arquiteturas de Persistência com Java · polimorfismo composições “persistence by ... >EJB é um modelo para componentes de negócio distribuídos >Vários tipos de aplicações](https://reader031.vdocuments.pub/reader031/viewer/2022022615/5ba144b109d3f2c06a8bf3da/html5/thumbnails/12.jpg)
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
![Page 13: Arquiteturas de Persistência com Java · polimorfismo composições “persistence by ... >EJB é um modelo para componentes de negócio distribuídos >Vários tipos de aplicações](https://reader031.vdocuments.pub/reader031/viewer/2022022615/5ba144b109d3f2c06a8bf3da/html5/thumbnails/13.jpg)
Globalcode – Open4Education13
ORM: Exemplo com Annotations JPA
![Page 14: Arquiteturas de Persistência com Java · polimorfismo composições “persistence by ... >EJB é um modelo para componentes de negócio distribuídos >Vários tipos de aplicações](https://reader031.vdocuments.pub/reader031/viewer/2022022615/5ba144b109d3f2c06a8bf3da/html5/thumbnails/14.jpg)
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
![Page 15: Arquiteturas de Persistência com Java · polimorfismo composições “persistence by ... >EJB é um modelo para componentes de negócio distribuídos >Vários tipos de aplicações](https://reader031.vdocuments.pub/reader031/viewer/2022022615/5ba144b109d3f2c06a8bf3da/html5/thumbnails/15.jpg)
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...
![Page 16: Arquiteturas de Persistência com Java · polimorfismo composições “persistence by ... >EJB é um modelo para componentes de negócio distribuídos >Vários tipos de aplicações](https://reader031.vdocuments.pub/reader031/viewer/2022022615/5ba144b109d3f2c06a8bf3da/html5/thumbnails/16.jpg)
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
![Page 17: Arquiteturas de Persistência com Java · polimorfismo composições “persistence by ... >EJB é um modelo para componentes de negócio distribuídos >Vários tipos de aplicações](https://reader031.vdocuments.pub/reader031/viewer/2022022615/5ba144b109d3f2c06a8bf3da/html5/thumbnails/17.jpg)
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
![Page 18: Arquiteturas de Persistência com Java · polimorfismo composições “persistence by ... >EJB é um modelo para componentes de negócio distribuídos >Vários tipos de aplicações](https://reader031.vdocuments.pub/reader031/viewer/2022022615/5ba144b109d3f2c06a8bf3da/html5/thumbnails/18.jpg)
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
![Page 19: Arquiteturas de Persistência com Java · polimorfismo composições “persistence by ... >EJB é um modelo para componentes de negócio distribuídos >Vários tipos de aplicações](https://reader031.vdocuments.pub/reader031/viewer/2022022615/5ba144b109d3f2c06a8bf3da/html5/thumbnails/19.jpg)
Globalcode – Open4Education19
Dificuldades na Adoção de ORM>Desconfiamos do SQL gerado automaticamente ...
> acompanhe o SQL gerado
> via logs
> via ferramentas – ex: Hibernate Tools
![Page 20: Arquiteturas de Persistência com Java · polimorfismo composições “persistence by ... >EJB é um modelo para componentes de negócio distribuídos >Vários tipos de aplicações](https://reader031.vdocuments.pub/reader031/viewer/2022022615/5ba144b109d3f2c06a8bf3da/html5/thumbnails/20.jpg)
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 ?
![Page 21: Arquiteturas de Persistência com Java · polimorfismo composições “persistence by ... >EJB é um modelo para componentes de negócio distribuídos >Vários tipos de aplicações](https://reader031.vdocuments.pub/reader031/viewer/2022022615/5ba144b109d3f2c06a8bf3da/html5/thumbnails/21.jpg)
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
![Page 22: Arquiteturas de Persistência com Java · polimorfismo composições “persistence by ... >EJB é um modelo para componentes de negócio distribuídos >Vários tipos de aplicações](https://reader031.vdocuments.pub/reader031/viewer/2022022615/5ba144b109d3f2c06a8bf3da/html5/thumbnails/22.jpg)
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 !
![Page 23: Arquiteturas de Persistência com Java · polimorfismo composições “persistence by ... >EJB é um modelo para componentes de negócio distribuídos >Vários tipos de aplicações](https://reader031.vdocuments.pub/reader031/viewer/2022022615/5ba144b109d3f2c06a8bf3da/html5/thumbnails/23.jpg)
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
![Page 24: Arquiteturas de Persistência com Java · polimorfismo composições “persistence by ... >EJB é um modelo para componentes de negócio distribuídos >Vários tipos de aplicações](https://reader031.vdocuments.pub/reader031/viewer/2022022615/5ba144b109d3f2c06a8bf3da/html5/thumbnails/24.jpg)
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
![Page 25: Arquiteturas de Persistência com Java · polimorfismo composições “persistence by ... >EJB é um modelo para componentes de negócio distribuídos >Vários tipos de aplicações](https://reader031.vdocuments.pub/reader031/viewer/2022022615/5ba144b109d3f2c06a8bf3da/html5/thumbnails/25.jpg)
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
![Page 26: Arquiteturas de Persistência com Java · polimorfismo composições “persistence by ... >EJB é um modelo para componentes de negócio distribuídos >Vários tipos de aplicações](https://reader031.vdocuments.pub/reader031/viewer/2022022615/5ba144b109d3f2c06a8bf3da/html5/thumbnails/26.jpg)
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
![Page 27: Arquiteturas de Persistência com Java · polimorfismo composições “persistence by ... >EJB é um modelo para componentes de negócio distribuídos >Vários tipos de aplicações](https://reader031.vdocuments.pub/reader031/viewer/2022022615/5ba144b109d3f2c06a8bf3da/html5/thumbnails/27.jpg)
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
![Page 28: Arquiteturas de Persistência com Java · polimorfismo composições “persistence by ... >EJB é um modelo para componentes de negócio distribuídos >Vários tipos de aplicações](https://reader031.vdocuments.pub/reader031/viewer/2022022615/5ba144b109d3f2c06a8bf3da/html5/thumbnails/28.jpg)
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
![Page 29: Arquiteturas de Persistência com Java · polimorfismo composições “persistence by ... >EJB é um modelo para componentes de negócio distribuídos >Vários tipos de aplicações](https://reader031.vdocuments.pub/reader031/viewer/2022022615/5ba144b109d3f2c06a8bf3da/html5/thumbnails/29.jpg)
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
![Page 30: Arquiteturas de Persistência com Java · polimorfismo composições “persistence by ... >EJB é um modelo para componentes de negócio distribuídos >Vários tipos de aplicações](https://reader031.vdocuments.pub/reader031/viewer/2022022615/5ba144b109d3f2c06a8bf3da/html5/thumbnails/30.jpg)
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
![Page 31: Arquiteturas de Persistência com Java · polimorfismo composições “persistence by ... >EJB é um modelo para componentes de negócio distribuídos >Vários tipos de aplicações](https://reader031.vdocuments.pub/reader031/viewer/2022022615/5ba144b109d3f2c06a8bf3da/html5/thumbnails/31.jpg)
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
![Page 32: Arquiteturas de Persistência com Java · polimorfismo composições “persistence by ... >EJB é um modelo para componentes de negócio distribuídos >Vários tipos de aplicações](https://reader031.vdocuments.pub/reader031/viewer/2022022615/5ba144b109d3f2c06a8bf3da/html5/thumbnails/32.jpg)
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
![Page 33: Arquiteturas de Persistência com Java · polimorfismo composições “persistence by ... >EJB é um modelo para componentes de negócio distribuídos >Vários tipos de aplicações](https://reader031.vdocuments.pub/reader031/viewer/2022022615/5ba144b109d3f2c06a8bf3da/html5/thumbnails/33.jpg)
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
![Page 34: Arquiteturas de Persistência com Java · polimorfismo composições “persistence by ... >EJB é um modelo para componentes de negócio distribuídos >Vários tipos de aplicações](https://reader031.vdocuments.pub/reader031/viewer/2022022615/5ba144b109d3f2c06a8bf3da/html5/thumbnails/34.jpg)
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.
![Page 35: Arquiteturas de Persistência com Java · polimorfismo composições “persistence by ... >EJB é um modelo para componentes de negócio distribuídos >Vários tipos de aplicações](https://reader031.vdocuments.pub/reader031/viewer/2022022615/5ba144b109d3f2c06a8bf3da/html5/thumbnails/35.jpg)
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.
![Page 36: Arquiteturas de Persistência com Java · polimorfismo composições “persistence by ... >EJB é um modelo para componentes de negócio distribuídos >Vários tipos de aplicações](https://reader031.vdocuments.pub/reader031/viewer/2022022615/5ba144b109d3f2c06a8bf3da/html5/thumbnails/36.jpg)
Globalcode – Open4Education36
Conclusões
> Para Onde ?>Bancos de Dados OO ?
>Web 3.0 ?> Web Semântica
> RDF / SPARQL
![Page 37: Arquiteturas de Persistência com Java · polimorfismo composições “persistence by ... >EJB é um modelo para componentes de negócio distribuídos >Vários tipos de aplicações](https://reader031.vdocuments.pub/reader031/viewer/2022022615/5ba144b109d3f2c06a8bf3da/html5/thumbnails/37.jpg)
Globalcode – Open4Education37
Para refletir...
> Você está em um ambiente de desenvolvimento:
>“old-school” ?
>“pure-relational” ?
>“data-driven” ?
> E está se conformando ?
![Page 38: Arquiteturas de Persistência com Java · polimorfismo composições “persistence by ... >EJB é um modelo para componentes de negócio distribuídos >Vários tipos de aplicações](https://reader031.vdocuments.pub/reader031/viewer/2022022615/5ba144b109d3f2c06a8bf3da/html5/thumbnails/38.jpg)
Globalcode – Open4Education38
Para refletir...
> Desenvolvedor:
> os ventos do mercado estão a seu favor !
> faça alguma coisa !
![Page 39: Arquiteturas de Persistência com Java · polimorfismo composições “persistence by ... >EJB é um modelo para componentes de negócio distribuídos >Vários tipos de aplicações](https://reader031.vdocuments.pub/reader031/viewer/2022022615/5ba144b109d3f2c06a8bf3da/html5/thumbnails/39.jpg)
Globalcode – Open4Education39
Perguntas e Respostas