260 likes | 380 Views
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
E N D
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 • Framework de Persistência • Resultados • Próximos Passos • Conclusão • Referências
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
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
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
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
Mapeamento Objeto-Relacional • Mapeando Herança • Três estratégias para o mapeamento de heranças
Mapeamento Objeto-Relacional • Mapeando Relacionamentos • Do Tipo Um (1:n e 1:1) • Do Tipo Muitos (n:n)
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
Camada de Persistência • Camada de Classes de Dados • Camada de Persistência (Enfoque deste trabalho)
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
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
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
Framework de Persistência - DePO • Estudo de Caso
Framework de Persistência - DePO • Configurando os Componentes DePO
Framework de Persistência - DePO • Configurando os Componentes DePO
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;
Framework de Persistência - DePO • Mapeamento with dpoDBMappingManager.Classes.Add do begin 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;
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;
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;
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;
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;
Resultados • Submissão de artigo à revista ClubeDelphi: “Persistência de Objetos no Delphi: Introdução ao framework DePO (Delphi Persistent Objects)”
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
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
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.