20
Desenvolvimento em .Net Dados vs Objectos

Desenvolvimento em .Net - Dados vs Objectos

Embed Size (px)

Citation preview

Page 1: Desenvolvimento em .Net - Dados vs Objectos

Desenvolvimento em .Net

Dados vs Objectos

Page 2: 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

Page 3: Desenvolvimento em .Net - Dados vs Objectos

Dados vs Objectos

Como se relacionam?

Page 4: Desenvolvimento em .Net - Dados vs Objectos

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

Page 5: Desenvolvimento em .Net - 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!

Dados vs Objectos

Page 6: Desenvolvimento em .Net - 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● ...

Page 7: Desenvolvimento em .Net - Dados vs Objectos

Mapeamento dados / objectos● ORM – Object/Relational Mapping

– tem como objectivo ligar os dois mundos... bases de dados e objectos

Page 8: Desenvolvimento em .Net - Dados vs 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

Page 9: Desenvolvimento em .Net - Dados vs Objectos

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.

Page 10: Desenvolvimento em .Net - Dados vs Objectos

Mapear Hierarquias● Estratégia 1

– mapear toda a estrutura hierarquica para uma tabela

Page 11: Desenvolvimento em .Net - Dados vs Objectos

Mapear Hierarquias● Estratégia 2

– mapear cada classe uma tabela

Page 12: Desenvolvimento em .Net - Dados vs Objectos

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

Page 13: Desenvolvimento em .Net - Dados vs Objectos

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)

Page 14: Desenvolvimento em .Net - Dados vs Objectos

de volta ao inicio...

Page 15: Desenvolvimento em .Net - Dados vs Objectos

Recapitulando● porque queremos adoptar o famoso conceito

“3-camadas”?

● Separação de Responsabilidade● Independencia na tecnologia usada nas diversas camadas

Page 16: Desenvolvimento em .Net - Dados vs Objectos

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”

Page 17: Desenvolvimento em .Net - Dados vs Objectos

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

Page 18: Desenvolvimento em .Net - Dados vs Objectos

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, ...

Page 19: Desenvolvimento em .Net - Dados vs Objectos

Caracteristica de um O/R Mapper● herança● transações● agregações (SUM, AVG, ...)● independente da base de dados● linguagem de pesquisa (tipo SQL)● ...

Page 20: 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