arquiteturas de persistência com java · tradição visual basic, delphi, oracle forms sql...

39
Globalcode – Open4Education 1 Arquiteturas de Persistência com Java Renato Bellia [email protected] http://diamond-powder.blogspot.com

Upload: others

Post on 20-Jan-2020

29 views

Category:

Documents


0 download

TRANSCRIPT

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