Este documento discute a relação entre dados e objetos, mapeamento objeto-relacional e características de um ORM (Object-Relational Mapper). Ele explica como o acesso a dados pode ser visto como um serviço e introduz conceitos como 3-camadas, n-camadas e SOA.
2. Objectivos
perceber questão quot;dados ou objectosquot;
●
perceber conceito 3-tier
●
identificar semelhanças e diferenças entre
●
sgbdr e objectos
perceber conceito n-tier e soa
●
perceber de que forma podemos ver o acesso
●
a dados como um serviço
saber o que é O/R Mapping
●
identificar caracteristicas de um O/R Mapper
●
4. Dados vs Objectos
Necessidades
●
Objectos incluem dados e comportamentos
–
Dados... bem são só dados...
–
Existência fisica
●
objectos normalmente existem em memória volátil
–
(ram)
dados normalmente existem em memória não
–
volátil (hdd)
eventualmente num SGBDR
●
5. Dados vs Objectos
No entanto:
●
qualquer aplicação minimamente interessante
–
necessitará de guardar informação para utilização
futura - “data-persistence”.
Ou seja...
●
teremos SEMPRE que arranjar alguma forma de
–
mapear a estrutura de objectos para a estrutura de
tabelas!
6. Nota Prévia
a análise partindo de um paradigma “data-
●
oriented” ou partindo de um paradigma “object-
oriented” não chega ao mesmo modelo de
“entidades”
(considerando uma entidade uma tabela ou um
–
objecto respectivamente.)
várias soluções para o mesmo problema
●
legacy code
●
...
●
7. Mapeamento dados / objectos
ORM – Object/Relational Mapping
●
tem como objectivo ligar os dois mundos... bases
–
de dados e objectos
8. Mapeamento dados / objectos
Dataset – Uma solução .Net
●
não é só uma tabela
–
não é bem um objecto
–
facilita a resolução de alguns problemas
–
se quisermos um conjunto de objectos do mesmo tipo
●
normalmente teremos que:
criar o objecto (uma classe);
–
criar uma coleção desses objectos (outra classe)
–
escrever código para filtrar / ordenar esses dados
–
9. Mapeamento dados / objectos
Problema Simples
●
Um Objecto <=> Uma Tabela
–
Uma Propriedade <=> Um Campo
–
Problemas Complexos
●
Hierarquia de objectos (herança)
–
Propriedades que não têm tipos de dados
–
“primitivos” => são por exemplo outro objecto.
10. Mapear Hierarquias
Estratégia 1
●
mapear toda a estrutura hierarquica para uma
–
tabela
12. Mapear Hierarquias
Outras opções
●
mapear cada classe concreta para uma tabela
–
criar uma estrutura genérica de tabelas que permita
–
acomodar todo o tipo de objectos
outras dificuldades
●
herança multipla
–
13. Mapeamento dados / objectos
assumindo que é baixo o custo (tempo) para:
●
a criação de objectos
–
a criação de mecanismos para persistir esses
–
objectos
a criação de mecanismos para utilizar esses
–
objectos
então a opção poderá ser
●
esquecer os datasets...
–
não ignorando as suas possiveis aplicações (por
●
exemplo relatórios)
15. Recapitulando
porque queremos adoptar o famoso conceito
●
“3-camadas”?
Separação de Responsabilidade
●
● Independencia na tecnologia usada nas diversas camadas
16. SOA e N-Tier – pequena introdução
“...the concept is to build an application, not as a monolithic system, but as
●
an aggregation of smaller systems that form a community”
17. Acesso a dados como um serviço
SE:
●
todos os objectos precisam de ser persistidos
–
todos os objectos precisam de ser pesquisáveis
–
SE um serviço é:
●
uma função perfeitamente definida
–
quot;self-containedquot;
–
que não depende do contexto ou estado de outro
–
serviço
18. Acesso a dados como um serviço
ENTÃO
●
o acesso a dados é um serviço
–
MELHOR...
●
Já há frameworks que implementam esse serviço!
–
(O/R Mapper)
●
exemplos
●
Hibernate, ActiverRecord, LLBLGen, ...
–
19. Caracteristica de um O/R Mapper
herança
●
transações
●
agregações (SUM, AVG, ...)
●
independente da base de dados
●
linguagem de pesquisa (tipo SQL)
●
...
●
20. Objectivos
perceber questão quot;dados ou objectosquot;
●
perceber conceito 3-tier
●
identificar semelhanças e diferenças entre
●
sgbdr e objectos
perceber conceito n-tier e soa
●
perceber de que forma podemos ver o acesso
●
a dados como um serviço
saber o que é O/R Mapping
●
identificar caracteristicas de um O/R Mapper
●