26
Persistência em Software Orientado a Objetos: Soluções de Mapeamento Marcelo Santos Daibert Orientador: Marco Antônio Pereira Araújo Co-Orientadora: Alessandreia Marta de Oliveira Julio

Persistência em Software Orientado a Objetos:

  • Upload
    jaimie

  • View
    41

  • Download
    3

Embed Size (px)

DESCRIPTION

Persistência em Software Orientado a Objetos:. Soluções de Mapeamento. Orientador: Marco Antônio Pereira Araújo Co-Orientadora: Alessandreia Marta de Oliveira Julio. Marcelo Santos Daibert. Agenda. Motivação Contextualização Mapeamento Objeto-Relacional Camada de Persistência - PowerPoint PPT Presentation

Citation preview

Page 1: Persistência em Software Orientado a Objetos:

Persistência em Software Orientado a Objetos:

Soluções de Mapeamento

Marcelo Santos Daibert

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

Page 2: Persistência em Software Orientado a Objetos:

2

Agenda

• Motivação

• Contextualização

• Mapeamento Objeto-Relacional

• Camada de Persistência

• Framework de Persistência

• Resultados

• Próximos Passos

• Conclusão

• Referências

Page 3: Persistência em Software Orientado a Objetos:

3

Motivação

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

• Necessidade de persistência dos objetos em alguma estratégia de armazenamento

• Atualmente os banco de dados orientado a objetos não são maduros o suficiente

Page 4: Persistência em Software Orientado a Objetos:

4

Contextualização

• Persistência de Objetos

• Estratégias de Persistência em Banco de Dados: – Orientado a objetos, objeto relacional e relacional

• No contexto deste trabalho é apresentado uma abordagem de persistência de objetos em banco de dados relacional

Page 5: Persistência em Software Orientado a Objetos:

5

Mapeamento Objeto-Relacional

• O modelo relacional de dados difere substancialmente do modelo orientado a objetos

• Modelo Relacional:– Tabelas– Linhas (tuplas)– Colunas

• Modelo Orientado a Objetos:– Classes– Atributos– Objetos

Page 6: Persistência em Software Orientado a Objetos:

6

Mapeamento Objeto-Relacional

• Consiste em mapear as classes, seus atributos e seus relacionamentos para o modelo relacional

• Escolhendo um OID (Object Identification)• Mapeando atributos para colunas• Mapeando classes para tabelas

Page 7: Persistência em Software Orientado a Objetos:

7

Mapeamento Objeto-Relacional

• Mapeando Herança– Três estratégias para o mapeamento de heranças

Page 8: Persistência em Software Orientado a Objetos:

8

Mapeamento Objeto-Relacional

• Mapeando Relacionamentos– Do Tipo Um (1:n e 1:1)

– Do Tipo Muitos (n:n)

Page 9: Persistência em Software Orientado a Objetos:

9

Camada de Persistência

• Estrutura agregada ao sistema responsável pela persistência e manipulação dos objetos

• Três estratégias para persistência de objetos em um banco de dados relacional:– Camada SQL

Page 10: Persistência em Software Orientado a Objetos:

10

Camada de Persistência

– Camada de Classes de Dados

– Camada de Persistência (Enfoque deste trabalho)

Page 11: Persistência em Software Orientado a Objetos:

11

Framework de Persistência

• Conceito: Solução completa e genérica para camada de persistência de objetos:– Conexão ao banco de dados relacional– Mapeamento– Persistência de Objetos– Manipulação de Objetos

• Create - Criar• Retrieve - Recuperar• Update - Atualizar• Delete - Excluir

Page 12: Persistência em Software Orientado a Objetos:

12

Framework de Persistência - DePO

• DePO (Delphi Persistent Objects)– Ambiente de Desenvolvimento

• Linguagem Delphi / Kylix

– Plataforma Suportada• Windows / Linux

– Compatibilidade com SGBD Relacional• Todos

– Estratégia de Mapeamento• XML ou .pas agregado ao sistema

– Valor• Freeware e OpenSource

Page 13: Persistência em Software Orientado a Objetos:

13

Framework de Persistência - DePO

– Estratégia para Persistência• Classe que será persistida herda da classe persistente do

DePO

– Estratégia para Relacionamento Herança• Uma tabela para cada classe

– Estratégia para Relacionamento do Tipo Um• Chave estrangeira na tabela referenciada e/ou que referencia

– Estratégia para Relacionamento do Tipo Muitos• Cria-se outra tabela para o manter o relacionamento• Suporte ao Tipo Coleção de Objetos• Transparente ao programador

Page 14: Persistência em Software Orientado a Objetos:

14

Framework de Persistência - DePO

• Estudo de Caso

Page 15: Persistência em Software Orientado a Objetos:

15

Framework de Persistência - DePO

– Configurando os Componentes DePO

Page 16: Persistência em Software Orientado a Objetos:

16

Framework de Persistência - DePO

– Configurando os Componentes DePO

Page 17: Persistência em Software Orientado a Objetos:

17

Framework de Persistência - DePO

– Mapeamento

TPessoa = class(TdpoPersistentObject) private FCodigo: Integer; FNome: String; published property Codigo: Integer read FCodigo write FCodigo; property Nome: String read FNome write FNome; end;

TProfessor = class(TPessoa) private FCPF: Integer; published property CPF: Integer read FCPF write FCPF; end;

Page 18: Persistência em Software Orientado a Objetos:

18

Framework de Persistência - DePO

– Mapeamentowith dpoDBMappingManager.Classes.Add dobegin ClassObject := TProfessor; InheritsMappingFrom := TPessoa; StorageName := 'Professor'; with AttributesMapping.add do begin AttributeName := 'Codigo'; IsOid := True; ColumnName := 'Codigo'; IndexType := idxUnique; Required := True; end; with AttributesMapping.add do begin AttributeName := 'CPF'; IsOid := False; ColumnName := 'CPF'; Required := True; end;end;

Page 19: Persistência em Software Orientado a Objetos:

19

Framework de Persistência - DePO

– Manipulação dos Objetos• Instanciação e Persistência

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

Page 20: Persistência em Software Orientado a Objetos:

20

Framework de Persistência - DePO

– Manipulação dos Objetos• Recuperação

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;

Page 21: Persistência em Software Orientado a Objetos:

21

Framework de Persistência - DePO

– Manipulação dos Objetos• Atualização

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

Page 22: Persistência em Software Orientado a Objetos:

22

Framework de Persistência - DePO

– Manipulação dos Objetos• Exclusão

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

Page 23: Persistência em Software Orientado a Objetos:

23

Resultados

• Submissão de artigo à revista ClubeDelphi:

“Persistência de Objetos no Delphi: Introdução ao framework DePO (Delphi Persistent Objects)”

Page 24: Persistência em Software Orientado a Objetos:

24

Próximos Passos

• Estudo dos frameworks:– IO (Instant Objects)– TiOPF (TechInside Object Persistence Framework)– ECO (Enterprise Core Objects)– Miolo– Hibernate

• Reestruturação do relatório monográfico para buscar maior didática

• Estudo comparativo entre os frameworks

• Divulgação e disponibilização dos resultados para a comunidade acadêmica

Page 25: Persistência em Software Orientado a Objetos:

25

Conclusão

• Os frameworks buscam suprir as necessidades do desenvolvimento orientado a objetos, unindo:– A Maturidade,– A Confiança,– E a Rapidez dos bancos de dados relacionais

Page 26: Persistência em Software Orientado a Objetos:

26

Referências

• AMBLER, S. W. Mapping Objects To Relational Databases. Disponível em: <http://www.ambysoft.com/mappingObjects.html>. Acesso em: 10 jun. 2005.

• AMBLER, S. W. Análise e Projeto Orientado a Objeto. Rio de Janeiro: Infobook, 1997.

• AMBLER, S. W. The Design of a Robust Persistence Layer for Relational Databases. Disponível em: <http://www.ambysoft.com/persistenceLayer.html>. Acesso em: 10 jun. 2005.

• SATZINGER, J.; ORVIK, T. Object-Oriented Approach. USA: Course Technology, 1996.

• TAFNET, M. A.; CORREIA, C. H. Análise Orientada a Objetos. Florianópolis: Visual Books, 2001.