leonardoeloy +mapeamento objeto-relacional conceito e implementacao

Upload: wotila-carneiro

Post on 19-Oct-2015

24 views

Category:

Documents


0 download

TRANSCRIPT

  • Mapeamento Objeto-Relacional:

    Leonardo Eloyhttp://leonardoeloy.comDezembro/2009

    Mapeamento Objeto-Relacional:Conceito e Implementao

  • JavaCEComunidade Java

    http://javace.orghttp://javace.org

  • Agenda

    (1) Conceito

    (2) Implementao

    (3) Problemas

  • ConceitoIntroduo

    Object-Relational MappingObject-Relational Mapping

    ou somente:

    O/RM

    OR/M

    O/R Mapping

    ORM

  • ConceitoObject-Relational Mapping

    Tcnica de converso de Tcnica de converso de tipos de dados entre doissistemas incompatveis

  • Conceito

  • ConceitoBanco de Dados vs. Orientao a Objetos

    declarativo imperativodeclarativo imperativo

    string varchar

    ? schema

    ponteiros junes

  • ConceitoBanco de Dados vs. Orientao a Objetos

    encapsulado pblicoencapsulado pblico

    validao restries

    ? herana

    DBA desenvolvedor

  • ConceitoBanco de Dados vs. Orientao a Objetos

    Xestrutura

    Xestrutura

    comportamento

  • ConceitoBanco de Dados vs. Orientao a Objetos

    BDs gerenciam dadosObjetos modelam comportamentos

  • ConceitoProblemas no Mapeamento

    identidade

    sequences

    identidadeobjetoA == objetoB;

    objetoA.equals(objetoB);

    idntico

    igual

  • ConceitoProblemas no Mapeamento

    herana

    ?

    herana

  • ConceitoProblemas no Mapeamento

    associao

    FKs

    associao1-11-n

    n-nn-n

  • ConceitoVantagens de Utilizar ORM

    produtividade

  • ConceitoVantagens de Utilizar ORM

    manutenibilidade

  • ConceitoVantagens de Utilizar ORM

    performance

  • ConceitoVantagens de Utilizar ORM

    abstrao

  • ConceitoDesvantagens de Utilizar ORM

    abstrao

  • ConceitoDesvantagens de Utilizar ORM

    performance

  • ConceitoDesvantagens de Utilizar ORM

    manutenibilidade

  • ConceitoDesvantagens de Utilizar ORM

    produtividade

  • ConceitoTipos de Dados

    Fato: qualquer tcnica de Fato: qualquer tcnica de Fato: qualquer tcnica de mapeamento de tipos de dados ser ineficaz em todos os casos

    Fato: qualquer tcnica de mapeamento de tipos de dados ser ineficaz em todos os casos

  • ConceitoQuando Usar?

    Schema normalizado

  • ConceitoQuando Usar?

    Tem PKsTem PKs

  • ConceitoQuando Usar?

    Tem FKs que referenciam PKs, no colunas

  • ConceitoTipos de Dados

    Fato: qualquer tcnica de mapeamento ser ineficaz em

    todos os casos

    Fato: qualquer tcnica de mapeamento ser ineficaz em

    todos os casos

  • Agenda

    (2) Implementao

    (1) Conceito

    (3) Problemas

  • ImplementaoORM na Prtica

    padres-basepadres-base

  • ImplementaoORM na Prtica Gateway

    - objeto que encapsula o acesso externo a um sistema ou recurso;

    de APIs,

    - objeto que encapsula o acesso externo a um sistema ou recurso;

    - gateways provm a funcionalidade de conter o cdigo especializado para chamada

    de APIs, enquanto objetos utilizam chamadas simplificadas ao gateway.de APIs, de APIs, enquanto objetos utilizam chamadas simplificadas ao gateway.

    Patterns of Enterprise Application Design, Martin Fowler

  • ImplementaoORM na Prtica Mapper

    - um objeto que permite a comunicao entre dois objetos independentes;- um objeto que permite a comunicao entre dois objetos independentes;

    - comunicao de dois objetos ignorantes entre si;

    - no cria dependncias entre objetos.- no cria dependncias entre objetos.

    Patterns of Enterprise Application Design, Martin Fowler

  • ImplementaoORM na Prtica

    padres de fonte padres de fonte padres de fonte de dados

  • ImplementaoORM na Prtica Table Data GatewayTable Data Gateway

    - um objeto atua como Gateway para o banco de dados;- um objeto atua como Gateway para o banco de dados;

    - uma instncia tem todas as tuplas da tabela;

    - funcionalidade bsicas de CRUD;

    Patterns of Enterprise Application Design, Martin Fowler

    - funcionalidade bsicas de CRUD;

    - relacionamento entre trabelas;

    - geralmente, trabalha com arrays.

  • ImplementaoORM na Prtica Row Data GatewayRow Data Gateway

    - um objeto atua como Gateway para um nico registro no banco;

    -

    -

    - um objeto atua como Gateway para um nico registro no banco;

    - uma instncia por tabela;

    - trabalha somente com inseres e atualizaces.

    Patterns of Enterprise Application Design, Martin Fowler

    -- trabalha somente com inseres e atualizaces.

  • ImplementaoORM na Prtica Active RecordActive Record

    - encapsula uma linha de uma tabela;

    -

    -

    - encapsula uma linha de uma tabela;

    - uma classe base Record prov os mtodos bsicos;

    - possui lgica de domnio sobre os dados & acesso ao banco.

    Patterns of Enterprise Application Design, Martin Fowler

    -- possui lgica de domnio sobre os dados & acesso ao banco.

  • ImplementaoORM na Prtica Data MapperData Mapper

    - camada de mapeamentos que move os dados entre objetos e o banco,

    mantendo

    -

    - camada de mapeamentos que move os dados entre objetos e o banco,

    mantendo-os independente entre si e o prprio mapeador;

    - mapeamento externo classe;

    Patterns of Enterprise Application Design, Martin Fowler

    -

    -

    - mapeamento externo classe;

    - persiste modelo de objetos.

  • ImplementaoComo funciona?

    classes -> tabelasclasses -> tabelasclasses -> tabelas

    instncias -> registrosinstncias -> registros

  • ImplementaoJDBC para Relacional

    Evento

    Nome Data # Participantes

  • ImplementaoJDBC para Relacional

    Evento

    Nome Data # Participantes

  • ImplementaoJDBC para Relacional

    Evento Palestrante

    Nome Data # Participantes

    Nome Palestra Data

    1 N

  • ImplementaoJDBC para Relacional

  • ImplementaoJDBC para Relacional

    Grafo de Grafo de Grafo de insero

    erro

  • ImplementaoJDBC para Relacional

    O mesmoO mesmoO mesmoproblema para

    outras operaes

  • ImplementaoFramework ORM

    Soluo: Soluo: framework ORM?

  • ImplementaoFramework ORM: DAO vs. ORM

    E o padro Data Access Object?E o padro Data Access Object?

  • ImplementaoFramework ORM: DAO vs. ORM

    E o padro Data Access Object?E o padro Data Access Object?E o padro Data Access Object?

    Simples

    Separao de dados (DTO) e comportamento (DAO)

    Arquiteturas distribudas: DTOs entre camadas, DAOs expostos como servios

  • ImplementaoFramework ORM: DAO vs. ORM

    E o padro Data Access Object?E o padro Data Access Object?E o padro Data Access Object?

    Sem necessidade de runtime so classes puras

    Cdigo de alta performance, se o DAO utilizacapacidades do banco (joins, stored procedures)

  • ImplementaoFramework ORM: DAO vs. ORM

    Porm, com os DAOsPorm, com os DAOsPorm, com os DAOs

    Grande volume de cdigo para implementao

    Necessita de conhecimento do esquema de bancopara ser implementado

  • ImplementaoFramework ORM: DAO vs. ORM

    J com ORM:J com ORM:J com ORM:

    Modelo de domnio j pode ser desenvolvido em Java

    Cacheing, auditoria, AOP: teriam que ser implementados manualmente no banco

  • ImplementaoFramework ORM: DAO vs. ORM

    Mas, mesmo com o ORM:Mas, mesmo com o ORM:Mas, mesmo com o ORM:

    Dados e comportamento no esto separados

    Faade necessrio para disponibilizao do serviopara uma arquitetura distribuda

    Portabilidade entre fabricantes de ORM complicada

  • ImplementaoFramework ORM: DAO vs. ORM

    Nem eu, nem vocNem eu, nem vocNem eu, nem voc

    Uma camada DAO poderia ser exposta somente paraclientes remotos

    Um faade DAO sobre o modelo de domnio ORM: benefcios do ORM em tempo de execuo e as

    capacidades de distribuio dos DAOs.

  • ImplementaoRequisitos de Frameworks ORM

    RequisitosRequisitosRequisitos

    Transaes

    ConcorrnciaControle de

    Concorrncia

    Cacheing: porunidade de

    trabalho ou poraplicao

  • ImplementaoRequisitos de Frameworks ORM

    RequisitosRequisitosRequisitos

    Lazy Loading

    Atualizaes/Remo-es em cascata

    Suporte a consultas com uma API para

    objetos

  • ImplementaoRequisitos de Frameworks ORM

    RequisitosRequisitosRequisitos

    DependnciasOrdenao de Dependncias

    Suporte a Paginao

    Suporte a funes

    agregadas

    e muito mais

  • Agenda

    (3) Problemas

    (1) Conceito

    (2) Implementao

  • ProblemasProblemas Pertinentes

    Gerao de SQL a principal fraqueza de frameworks ORM. Como superar isso?

  • ProblemasProblemas Pertinentes

    ORM utilizado para trazer dados do banco para o objeto. Seu objetivo no esse.

  • ProblemasProblemas Pertinentes

    O grande conceito por trs do ORM mapear construes relacionais em suas contrapartidas orientadas a objeto.

  • ProblemasProblemas Pertinentes

    Todo o problema reside em mapear tipos de dados diferentes, porm...

  • ProblemasProblemas Pertinentes

    E se ns mapearmos consultas?

  • ProblemasProblemas Pertinentes

    Tabelas, views, tuplas... Estas so entidades privadas do Banco de Dados.

  • ProblemasProblemas Pertinentes

    A consulta a forma que o banco utilizapara expor seus dados.

  • ProblemasProblemas em Aberto

    Integrao ORM com a linguagem (como o LINQ);Tcnicas de cacheing mais eficazes;Tcnicas de cacheing mais eficazes; Reduo do trfego entre o framework e o banco de dados;Otimizao inline no framework;Alteraes no banco de dados para melhor sintoniacom o framework ORM;Distribuio e sincronizao de instncias no ORM.

  • Concluso (1)

    ORMs so ferramentas poderosas, mas por utilizarem o conceito de mapeamento, possuem falhas de design, conceito de mapeamento, possuem falhas de design, no de implementao; Em grandes projetos, ORMs podem ser um problemase no bem empregados; Em pequenos projetos, ORM a melhor opo; Em grandes aplicaes, a utilizao dos ORMs podemestar associadas a outras tcnicas, como DAOs;

  • Concluso (2)

    bom utilizar um ORM quando h a possibilidade de criao de um modelo de domnio em Java, do zero;criao de um modelo de domnio em Java, do zero;A utilizao deve ser avaliada a cada projeto e suasnecessidades de leitura e escrita de dados; Em geral, uma soluo como Spring + Hibernate muito bem sucedida em sistemas Web mediados.

  • Obrigado!

    http://leonardoeloy.comhttp://leonardoeloy.com

    http://javace.orghttp://javace.org