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
Top Related