Upload
wotila-carneiro
View
24
Download
0
Embed Size (px)
Citation preview
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