Persistência em Software Orientado a Objetos: Abordagens Utilizando Frameworks OpenSource Marcelo Santos Daibert Orientador: Marco Antônio Pereira Araújo Co-Orientadora: Alessandreia Marta de Oliveira Julio Agenda ● Motivação ● Contextualização ● Mapeamento Objeto-Relacional ● Camada de Persistência ● Frameworks de Persistência ● Considerações Finais 2 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: – Arquivo texto, xml, serializado – Banco de dados relacional, pós-relacional, orientado a objetos Atualmente os banco de dados orientado a objetos não são maduros o suficiente 3 Contextualização ● Persistência de Objetos ● Estratégias de Persistência em Banco de Dados: – ● Orientado a objetos, objeto-relacional e relacional No contexto desta apresentação é apresentado abordagens de persistência de objetos em banco de dados relacional 4 Mapeamento Objeto-Relacional ● ● O modelo relacional de dados difere substancialmente do modelo orientado a objetos Modelo Relacional: – – – ● Tabelas Linhas (tuplas) Colunas Tabelas Modelo Orientado a Objetos: – Classes – Atributos – Objetos – Relacionamentos Classes 5 Mapeamento Objeto-Relacional ● Consiste em mapear as classes, seus atributos e seus relacionamentos para o modelo relacional Tabelas Classes ● ● ● ● Escolher um OID (Object Identification) Mapear classes para tabelas Mapear atributos para colunas Mapear os relacionamentos – Herança, Associação, Composição, Agregação 6 Mapeamento Objeto-Relacional ● Mapear Herança – Três estratégias para o mapeamento de heranças ● Uma tabela por hierarquia 7 Mapeamento Objeto-Relacional ● Uma tabela por classe concreta 8 Mapeamento Objeto-Relacional ● Uma tabela por classe 9 Mapeamento Objeto-Relacional ● Mapear Relacionamentos – Do Tipo 1:1 – Do Tipo 1:N 10 Mapeamento Objeto-Relacional – Do Tipo N:N 11 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 SQL SGBDR Classes de Domínio 12 Camada de Persistência – Camada de Classes de Acesso a Dados SQL SGBDR Classes de Acesso a Dados Classes de Domínio – Camada de Persistência Camada de Persistência SQL SGBDR Classes de Domínio 13 Frameworks 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 Objeto-Relacional – Persistência de Objetos – Manipulação de Objetos – CRUD: ● ● ● ● Create – Criar Retrieve – Recuperar Update – Atualizar Delete – Excluir 14 Frameworks de Persistência ● Kylix / Delphi – DePO* (Delphi Persistent Objects) ● – TiOPF (TechInsite Object Persistence Framework) ● – http://www.techinsite.com.au/tiOPF/ Instant Objects ● ● http://www.liws.com.br/depo http://www.instantobjects.org/ PHP – Miolo ● http://www.miolo.org.br *DAIBERT, M. S., ARAÚJO, M. A. P., JULIO, A. M. O. Persistência de Objetos no Delphi: Introdução ao DePO (Delphi Persistent Objects). Clube Delphi, dez 2005. 15 Frameworks de Persistência ● Java: – Hibernate ● – Prevayler ● – http://jbanana.c3sl.ufpr.br/ JDO (Java Data Objects) ● – http://www.prevayler.org/ JBanana ● – http://www.hibernate.org/ http://java.sun.com/products/jdo/ CMP e BMP (Container/Bean Managed Persistence) ● http://java.sun.com/products/ejb/ 16 Frameworks de Persistência ● Plataforma .NET: – NHibernate ● – Gentle.Net ● – http://www.nhibernate.org/ http://sourceforge.net/projects/gopf XPrevail ● http://xprevail.sourceforge.net/ 17 Considerações Finais ● Os frameworks de persistência buscam facilitar o desenvolvimento do software, associando: – Velocidade e maturidade dos bancos de dados relacionais – Com as vantagens do paradigma orientado a objetos 18 Persistência em Software Orientado a Objetos: Abordagens Utilizando Frameworks OpenSource {msdaiber, maraujo, amojulio} @granbery.com.br Marcelo Santos Daibert Orientador: Marco Antônio Pereira Araújo Co-Orientadora: Alessandreia Marta de Oliveira Julio