Marcelo Santos Daibert1 Persistência em Software Orientado a Objetos: Soluções de Mapeamento...

Post on 18-Apr-2015

109 views 5 download

Transcript of Marcelo Santos Daibert1 Persistência em Software Orientado a Objetos: Soluções de Mapeamento...

Marcelo Santos Daibert 1

Persistência em Software Orientado a Objetos:

Soluções de MapeamentoObjeto-Relacional

Marcelo Santos Daibert

Orientador: Marco Antônio Pereira AraújoCo-Orientadora: Alessandreia Marta de Oliveira Julio

Marcelo Santos Daibert 2

Agenda

• Motivação• Metodologia• Contextualização• Frameworks de Persistência

– DePO– Instant Objects– TiOPF

• Estudo de Caso: Acadêmico OO• Resultados• Considerações Finais

Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão

Marcelo Santos Daibert 3

Motivação

• Crescente utilização do paradigma orientado a objetos no desenvolvimento de software

• As estratégias de armazenamento orientadas a objetos não são maduras o suficiente

• Reduzir o gap entre o paradigma de desenvolvimento orientado a objetos e o modelo relacional de armazenamento de dados

• A busca por soluções opensource eficazes e eficientes para persistência de objetos em base de dados relacional

Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão

Marcelo Santos Daibert 4

Motivação

• Projeto de Iniciação Científica– Estratégias de Persistência em Software Orientado a

Objetos

– Estudar as diversas estratégias de persistência• Mapeamento Objeto-Relacional• Banco de Dados OO• Banco de Dados OR

– Criar uma camada de persistência própria para o ambiente Delphi

Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão

Marcelo Santos Daibert 5

Metodologia

• Estudo exploratório de persistência de objetos e camadas de persistência

• Estudo comparativo entre as estratégias opensource disponíveis para o ambiente Delphi

• Definição e implementação de uma aplicação utilizando um framework de persistência– Utilização de padrões de projeto (Design Patterns)– Utilização de ferramenta de versionamento (SVN)– Utilização de ferramenta de BugTracking (NSN

Projetc)

• Divulgação dos resultados

Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão

Marcelo Santos Daibert 6

Metodologia

Marcelo Santos Daibert 7

Metodologia

• Estudo exploratório de persistência de objetos e camadas de persistência

• Estudo comparativo entre as estratégias opensource disponíveis para o ambiente Delphi

• Definição e implementação de uma aplicação utilizando um framework de persistência– Utilização de padrões de projeto (Design Patterns)– Utilização de ferramenta de versionamento (SVN)– Utilização de ferramenta de BugTracking (NSN

Projetc)

• Divulgação dos resultados

Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão

Marcelo Santos Daibert 8

Marcelo Santos Daibert 9

Metodologia

• Estudo exploratório de persistência de objetos e camadas de persistência

• Estudo comparativo entre as estratégias opensource disponíveis para o ambiente Delphi

• Definição e implementação de uma aplicação utilizando um framework de persistência– Utilização de padrões de projeto (Design Patterns)– Utilização de ferramenta de versionamento (SVN)– Utilização de ferramenta de BugTracking (NSN

Projetc)

• Divulgação dos resultados

Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão

Marcelo Santos Daibert 10

Contextualização

• POO – Programação Orientada a Objetos• Paradigma OO difere substancialmente do

Paradigma Relacional

Classes

Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão

Tabelas#

Marcelo Santos Daibert 11

Contextualização

• Mapeamento Objeto Relacional

– Escolha de um OID (Object Identification)– Mapear atributos para colunas– Mapear classes para tabelas

Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão

Classes

Tabelas

Marcelo Santos Daibert 12

Contextualização

– Mapear Herança

Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão

Uma tabela por hierarquia

Uma Tabela porClasse Concreta

Uma Tabela porClasse

Marcelo Santos Daibert 13

Contextualização

– Mapear Associação 1:1

– Mapear Associação 1:n

Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão

Marcelo Santos Daibert 14

Contextualização

– Mapear Associação n:n

Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão

Marcelo Santos Daibert 15

Contextualização

• Camadas de Persistência

– Camada de Persistência

Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão

Marcelo Santos Daibert 16

Contextualização

• Camadas de Persistência

– Camada de Persistência

Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão

Classes de Domínio

SQL

SGBDRCamada

dePersistência

Camada de Persistência

Marcelo Santos Daibert 17

Frameworks de Persistência

• Estrutura complexa e genérica responsável pela persistência e manipulação dos objetos.

– DePO (Delphi Persistent Objects)– IO (Instant Objects)– TiOPF (TechInside Object Persistent Framework)

Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão DePO IO TiOPF

Marcelo Santos Daibert 18

Frameworks de Persistência

• DePO

Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão DePO IO TiOPF

Marcelo Santos Daibert 19

Frameworks de Persistência

– Manipulação de Objetos• Persistir / Criar

Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão DePO IO TiOPF

var Aluno: TAluno;begin Aluno:= TAluno.Create(dpoDBXMechanism); Aluno.Codigo:= '1'; Aluno.Nome:= 'José da Silva'; Aluno.Matricula:= '2002102013'; Aluno.Save;end;

Marcelo Santos Daibert 20

Frameworks de Persistência

– Manipulação de Objetos• Recuperar

Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão DePO IO TiOPF

var Aluno: TAluno;begin Aluno:= TAluno.Create(dpoDBXMechanism); Aluno.Codigo:= '1'; if not Aluno.Retrieve then begin MessageDlg('Aluno não existe', mtWarning, [mbOK], 0); end;end;

Marcelo Santos Daibert 21

Frameworks de Persistência

– Manipulação de Objetos• Atualizar

Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão DePO IO TiOPF

var Aluno: TAluno;begin Aluno:= TAluno.Create(dpoDBXMechanism); Aluno.Codigo:= '1'; if Aluno.Retrieve then begin Aluno.Nome:= 'Joaquim Souza'; Aluno.Save; end;end;

Marcelo Santos Daibert 22

Frameworks de Persistência

– Manipulação de Objetos• Excluir

Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão DePO IO TiOPF

var Aluno: TAluno;begin Aluno:= TAluno.Create(dpoDBXMechanism); Aluno.Codigo:= '1'; if Aluno.Retrieve then begin Aluno.Delete; Aluno.Save; end;end;

Marcelo Santos Daibert 23

Frameworks de Persistência

• Instant Objects

Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão DePO IO TiOPF

Marcelo Santos Daibert 24

Frameworks de Persistência

– Model Explorer

Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão DePO IO TiOPF

Marcelo Santos Daibert 25

Marcelo Santos Daibert 26

Frameworks de Persistência

– Manipulação de Objetos• Persistir / Criar

Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão DePO IO TiOPF

var objAluno : TAluno;begin objAluno:=TAluno.Create(InstantDBXConnector); objAluno.Nome := 'José da Silva'; objAluno.Matricula := 2002102013; objAluno.Store();end;

Marcelo Santos Daibert 27

Frameworks de Persistência

– Manipulação de Objetos• Recuperar

Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão DePO IO TiOPF

var objAluno : TAluno;begin try objAluno:=TAluno.Retrieve('ID',false,false, InstantDBXConnector); except MessageDlg('Aluno não Existe', mtWarning, [mbOK], 0); end;end;

Marcelo Santos Daibert 28

Frameworks de Persistência

– Manipulação de Objetos• Atualizar

Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão DePO IO TiOPF

var objAluno : TAluno;begin try objAluno:=TAluno.Retrieve('ID',false,false, InstantDBXConnector); objAluno.Nome := 'Joaquim Souza'; objAluno.Matricula := 2003201245; objAluno.Store(); except MessageDlg('Aluno não Existe', mtWarning, [mbOK], 0); end;end;

Marcelo Santos Daibert 29

Frameworks de Persistência

– Manipulação de Objetos• Excluir

Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão DePO IO TiOPF

var objAluno : TAluno;begin try objAluno:=TAluno.Retrieve('ID',false,false, InstantDBXConnector); objAluno.Dispose(); except MessageDlg('Aluno não Existe', mtWarning, [mbOK], 0); end;end;

Marcelo Santos Daibert 30

Frameworks de Persistência

• TiOPF– Componentes Data-aware

Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão DePO IO TiOPF

Marcelo Santos Daibert 31

Estudo de Caso: Acadêmico

• Sistema de Controle Acadêmico– Reengenharia (Estruturado -> Orientado a Objetos)– Utilização de Padrões de Projeto

• Persistência de Objetos– Utilização do framework de persistência objeto-

relacional DePO (Delphi Persistent Objetcs)

Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão

Marcelo Santos Daibert 32

Estudo de Caso: Acadêmico

Demo

Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão

Marcelo Santos Daibert 33

Resultados

• Artigo “Persistência de Objetos no Delphi: Introdução ao DePO(Delphi Persistent Objects)” aceito na revista ClubeDelphi.

• Artigo “Persistência em Software Orientado a Objetos: Abordagens Utilizando Frameworks OpenSource” aceito para apresentação oral no III Encontro de Software Livre do Amazonas (ESLAM) em Manaus

• Apresentação do minicurso “Persistência de Objetos em Delphi – Introdução ao Framework DePO(Delphi Persistent Objects)”

Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão

Marcelo Santos Daibert 34

Resultados

• Apresentação oral do workshop “Persistência em Software Orientado a Objetos: Abordagens Utilizando Frameworks OpenSource” no II Festival de Software Livre de Juiz de Fora (FESTSOL)

Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão

Marcelo Santos Daibert 35

Considerações Finais

• Este trabalho buscou apresentar soluções opensource eficazes e eficientes para suprir as necessidades de desenvolvimento orientado a objetos, unindo:– Maturidade,– Confiança,– Desempenho dos bancos de dados relacionais

• Trabalhos futuros:– Estudo dos frameworks proprietários, como o ECO,

ECO II, Bold.

Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão

Marcelo Santos Daibert 36

Persistência em Software Orientado a Objetos:

Soluções de MapeamentoObjeto-Relacional

Marcelo Santos Daibert

Orientador: Marco Antônio Pereira AraújoCo-Orientadora: Alessandreia Marta de Oliveira Julio