Desenvolvimento em .Net
Dados vs Objectos
Objectivos● perceber questão "dados ou objectos"● 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
Dados vs Objectos
Como se relacionam?
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
● 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!
Dados vs Objectos
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● ...
Mapeamento dados / objectos● ORM – Object/Relational Mapping
– tem como objectivo ligar os dois mundos... bases de dados e objectos
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
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.
Mapear Hierarquias● Estratégia 1
– mapear toda a estrutura hierarquica para uma tabela
Mapear Hierarquias● Estratégia 2
– mapear cada classe uma tabela
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
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)
de volta ao inicio...
Recapitulando● porque queremos adoptar o famoso conceito
“3-camadas”?
● Separação de Responsabilidade● Independencia na tecnologia usada nas diversas camadas
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”
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– "self-contained"– que não depende do contexto ou estado de outro
serviço
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, ...
Caracteristica de um O/R Mapper● herança● transações● agregações (SUM, AVG, ...)● independente da base de dados● linguagem de pesquisa (tipo SQL)● ...
Objectivos● perceber questão "dados ou objectos"● 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