Persistência de Objetos

Documentos relacionados
MAPEAMENTO OBJETO RELACIONAL

COMPORTAMENTOS - Observações

Revisando Banco de Dados. Modelo Relacional

BANCO DE DADOS. Araújo Lima. Fev / Araújo

Mapeamento da herança em JPA

PRDS /01/2013. Ricardo A. Venieris Rodnei Couto

O que é modelo lógico. Tipos de modelo

Java para Desktop. Programação Orientada à Objetos 2 JSE

Módulo II Mapeamento OO x Relacional

BANCO DE DADOS GERENCIAL 1 A U L A 2

Banco de Dados. Aula 2 - Prof. Bruno Moreno 19/08/2011

Revisão de Bancos de Dados

Introdução. O que é um Banco de Dados (BD)?

Banco de Dados I Introdução SQL

Protótipo de um ORM para a plataforma.net. Orientador: Adilson Vahldick

AULA 3 Classificação dos Sistemas de Informação

BANCO DE DADOS I Atualizado em 13 de maio de 2009

Banco de Dados Relacional

MODELAGEM DE DADOS UNIDADE 4 Modelo Entidade-Relacionamento. Luiz Leão

Conceito de Campos e Tabelas

SISTEMA DE INFORMAÇÃO Modelo Conceitual. Prof. Luiz Fernando Laguardia Campos FMS

A linguagem SQL

BANCO DE DADOS ORIENTADO A OBJETOS

BANCO DE DADOS. Araújo Lima. Ago / Araújo

Sumário. BD Orientado a Objetos

Prof. Dr. Joaquim Assunção Banco de Dados. SQL (parte 4) DDL Restrições

Marcio Victorino

Banco de Dados. Banco de Dados II. Característica fundamental de SGBDs. Abordagem SGBD x Processamento de Arquivos Tradicional

MAPEAMENTO OBJETO RELACIONAL. Professora Lucélia Oliveira

JPA Com Hibernate. Paulo Ricardo Lisboa de Almeida. 1 Universidade Positivo

Prof.: Clayton Maciel Costa

Herança. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.

MODELO RELACIONAL Prof.: Jacson Tiola Técnico em Redes de Computadores

BANCO DE DADOS. Vinícius Pádua

BCD29008 Banco de dados

SQL Básica DDL. Prof. Marcos A. Schreiner. 21 de outubro de Curso de Licenciatura em Computação

Oracle Objeto-Relacional. Pablo Vieira Florentino

PROCESSO SELETIVO PARA ESTÁGIO REMUNERADO NO TRIBUNAL DE CONTAS DO ESTADO DO MARANHÃO ENSINO SUPERIOR - INFORMÁTICA

Matéria Introdutória. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

ARMAZENAMENTO E PROCESSAMENTO DE BANCOS DE DADOS RELACIONAIS

Sistemas de Banco de Dados

Aula 7 SBD ER para Relacional. Profa. Elaine Faria UFU

Padrão de projeto de software

Modelagem de Dados MODELAGEM DE DADOS. Sistemas de Banco de Dados. Profa. Rosemary Melo

BCD29008 Banco de dados

Mapeamento da herança em JPA

Sistema de Banco de Dados. UNIDADE 1 Introdução aos Sistemas de Bancos de Dados Professor: Armando Hage

Mapeando Relacionamentos Entre Classes com Anotações Hibernate Por: Raphaela Galhardo Fernandes Gleydson de Azevedo F. Lima


Banco de dados POO Márcio Delamaro. Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP

MATA60 BANCO DE DADOS Aula 5- Modelo Relacional. Prof. Daniela Barreiro Claro

Universidade Federal da Paraíba CCEN Departamento de Informática Disciplina: Banco de Dados. Aula 1 Introdução a Banco de Dados

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE INTRODUÇÃO A SQL

Lista 02 Sistema de Banco de Dados CAP 241 Computação Aplicada I

Banco de Dados Modelagem e Normalização

Polimorfismo. O que é polimorfismo?

Introdução a Bancos de Dados

Abordagem relacional. Capítulo 4

Introdução à Banco de Dados

UML - Diagrama de Classes

Laboratório de Banco de Dados. Prof. Luiz Vivacqua.

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS

Conceitos Básicos de Banco de Dados

Introdução. descrever os tipos de interfaces e linguagens oferecidas por um SGBD. mostrar o ambiente de programas dos SGBD s

Sistemas da Informação. Banco de Dados I. Edson Thizon

Projeto Banco de Dados

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

Banco de Dados. SGBD - Sistema de Gerenciamento de Banco de Dados Parte 2. Prof. Leonardo Vasconcelos

BCD29008 Banco de dados

BCD29008 Banco de dados

AULA 1 INTRODUÇÃO A BANCO DE DADOS E VISÃO GERAL DO SQL CONCEITUANDO BANCO DE DADOS MODELO RELACIONAL

Banco de Dados Modelagem Conceitual de Dados. Prof. Edjandir Corrêa Costa

Linguagem de Consulta Estruturada (SQL)

Persistência. Prof. Alberto Costa Neto Linguagens de Programação. Departamento de Computação Universidade Federal de Sergipe

Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI CCO002 Engenharia de Software

Capítulo 2. Orientação a Objetos

Acadêmico: Samuel Y. Deschamps Orientador: Prof. Jacques R. Heckmann

Modelo Relacional. Banco de Dados 2º trimestre Prof. Patrícia Lucas

Banco de Dados. Banco de Dados

Programação Java (nível intermediário) 4. Polimorfismo

Herança entre Entidades JPA. Prof. Fellipe Aleixo

O modelo relacional encontra-se padronizado pela indústria de informática. Ele é chamado de

Aula 01 Revisão Geral Banco de Dados I Conceito de Banco de Dados e SGBD

Frameworks O Problema da Persistência

Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas

SEMINÁRIOS INTEGRADOS EM ADS PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

Programação Orientada a Objetos

MODELAGEM DE DADOS UNIDADE 2 Projeto de Banco de Dados. Luiz Leão

Aula 2 BD Introdução. Profa. Elaine Faria UFU

Introdução ao Banco de Dados. Banco de Dados

O Modelo Relacional. Criando relações em SQL

BD Objeto-Relacional - Motivação

Banco de Dados. Aula 6 - Prof. Bruno Moreno 09/09/2011

Modelo Entidade-Relacionamento (E-R)

Singleton e Adapter. Professor: Nazareno Andrade (baseado no material de Hyggo Almeida e Jacques Sauvé)

O Modelo Relacional. Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento)

Banco de Dados Modelo Relacional, Algebra Relacional, SQL

LINGUAGEM, TIPOS DE USUÁRIOS DE SGBD E MODELOS DE DADOS

Transcrição:

Persistência de Objetos

Objetos Persistentes ì Objetos Persistentes: são objetos que requerem armazenamento persistente. Exemplo: Instâncias da classe Descrição Produto devem ser armazenadas em uma base de dados.

Mecanismos de Armazenamento de Objetos Banco de Dados Orientado a Objetos não requer mapeamento para armazenar e recuperar objetos Banco de Dados Relacional Outros: Banco de Dados Hierárquico, Arquivo, XML, etc.

Armazenamento em um BD Relacional Aplicação em Java Usuários Finais Aplicação em C++ Aplicação em Delphi Base de Dados SGBD Programador DBA

Persistência de Objetos em SGBD Rel. ì Problema da Persistência de objetos em SGBDs relacionais: modelo e linguagem dismntos Linguagens OO Mpos de dados complexos (i.e. classes) hierarquias de herança linguagem imperamva (i.e. métodos) SGBDs relacionais Mpos de dados simples (domínios atômicos) dados armazenados em tabelas DML declaramva (i.e. SQL)

Persistência de Objetos ì Serviço de Persistência: Traduz objetos em registros e os salva em uma base de dados, e traduz os registros em objetos quando estes são recuperados de uma base de dados. Como implementar o serviço de persistência? 1. Através da própria classe de objeto persistente 2. Através de uma camada de persistência

Classe de Objeto Persistente 1. Serviços de Persistência através de uma Classe de Objeto Persistente: A classe de objeto persistente define o código para salvar e carregar os objetos em uma base de dados. Mapeamento Direto è O mapeamento direto precisa ser adicionado e manmdo manualmente. Problemas: Alto acoplamento entre a classe e o mecanismo de persistência. Serviços técnicos misturados com a lógica da aplicação (baixa coesão).

Camada de Persistência 2. Serviços de Persistência através de uma Camada de Persistência: Outras classes são responsáveis pelo mapeamento dos objetos persistentes. Mapeamento Indireto Para cada classe é definido um mapeador que é responsável por salvar e carregar os objetos da classe na base de dados.

Elementos da Camada de Persistência 1. Fachada 2. Mapeador de Base de Dados 3. Materialização e desmaterialização 4. Caches

Camada de Persistência - Fachada 1. Fachada: É definida uma fachada para os serviços da camada de persistência. A operação para recuperar um objeto precisa do OID do objeto e da classe do objeto.

Camada de Persistência - Mapeador 2. Mapeador de Base de Dados: Como a fachada não faz os serviços de mapeamento, estes serviços são delegados aos mapeadores. Para cada classe é definido um mapeador que é responsável pela materialização, desmaterialização e caching dos objetos.

Camada de Persistência ì Mapeadores das Classes de Objetos Persistentes public Object get (OID oid, Class persistenceclass) { IMapper mapper = (IMapper) mapperscollection.getmapper (persistenceclass); return mapper.get (oid); }

Camada de Persistência - Mapeador Implementação do Mapeadores: Mapeadores individuais codificados a mão (código específico) 1 Único mapeador baseado em metadados (código genérico) Gera dinamicamente o mapeamento a parmr de um esquema de objeto (metadado que descreve o mapeamento) para a base de dados. Possível para linguagens com reflexão

Persistência - Materialização 3. Materialização e desmaterialização: Nos mapeadores são definidos métodos para: carregar um objeto da base de dados (método get) - materialização salvar um objeto em uma base de dados (método put) - desmaterialização Como todos os mapeadores apresentam um código comum, este código pode ser definido em uma classe abstrata (método template).

Persistência - Materialização ì Classe Abstrata para o Mapeador

Persistência - Materialização ì Para cada classe de objeto persistente, deve ser definida uma subclasse da classe PersistenceMapper.

Persistência - Materialização Exemplo do método getobjectfromstorage do mapeador protected Object getobjectfromstorage (OID oid) { String key = oid.tostring(); dbrec = db.executesql( SELECT PRICE,ITEM_ID,DESC FROM PROD_DESC WHERE OID = + key); ProductDescription pd = null; if (dbrec.next()) { pd = new ProductSpecification (); pd.setoid (oid); pd.setprice (dbrec. getdouble ( PRICE ) ); pd.setitemid (dbrec. getlong ( ITEM_ID ) ); pd.setdescrip (dbrec. getstring ( DESC ) ); } dbrec.close(); // fecha o cursor do result set return pd; }

Persistência - Materialização ì Lazzy MaterializaMon (Materialização Por Demanda): Adia a materialização dos objetos referenciados. Pode ser implementada usando o padrão de projeto Proxy.

Persistência - Materialização ì Lazzy MaterializaMon (Materialização Por Demanda):

Persistência - Cache ì 4. Cache: Para aumentar a performance, os objetos materializados são manmdos pelos mapeadores das classes em um cache. quando um objeto é carregado ou inserido na base de dados na primeira vez, ele é incluído no cache.

Mapeamento Estrutural OO - Relacional Mapeamento Estrutural Classes / Atributos Associações Herança

Classes - Mapeamento Estrutural Para cada atributo mapeado deve exismr uma coluna na tabela correspondente cujo domínio é compahvel com o Mpo do atributo. O atributo idenmficador da classe deve estar mapeado para a coluna correspondente à chave primária. Caso não exista um atributo idenmficador na classe original, é necessário criá- lo. Conceitual Cliente nome endereco Projeto Cliente id: long nome: String endereco: String CLIENTE ID (PK) NOME VARCHAR ENDERECO VARCHAR

Associações 1:1 - Mapeam. Estrutural As classes associadas podem ser mapeadas para uma mesma tabela ou tabelas separadas. Projeto Cliente id: long nome: String end: Endereco Endereco id: long rua: String numero: int cli: Cliente è Se as classes são mapeadas para uma mesma tabela, o mapeamento é direto. è Se as classes mapeiam para tabelas separadas, uma chave estrangeira precisa estar definida em uma das tabelas. Obs: É conveniente que as classes associadas refiram- se mutuamente através de referências inversas.

Associações 1:1 - Mapeam. Estrutural Cliente nome Conceitual 1 1 possui Endereco rua numero Projeto Cliente MESMA TABELA id: long nome: String end: Endereco OU ID (PK) CLIENTE Endereco id: long rua: String numero: int cli: Cliente NOME END_RUA END_NUM VARCHAR VARCHAR

Associações 1:1 - Mapeam. Estrutural Cliente nome Conceitual 1 1 possui Endereco rua numero Projeto Cliente id: long nome: String end: Endereco Endereco id: long rua: String numero: int cli: Cliente TABELAS SEPARADAS CLIENTE ID (PK) NOME VARCHAR ENDERECO ID (PK) RUA VARCHAR NUMERO C_ID (FK)

Associações 1:N - Mapeam. Estrutural As classes associadas devem estar mapeadas em tabelas separadas A tabela correspondente à classe do lado N da associação deve conter uma chave estrangeira para a tabela correspondente à classe do lado 1 Projeto Cliente id: long nome: String pedidos: Collection Pedido id: long data: Date total: Float cli: Cliente Obs: É conveniente que as classes associadas refiram- se mutuamente através de referências inversas

Associações 1:N - Mapeam. Estrutural Cliente nome Conceitual 1 * faz data total Pedido Projeto Cliente id: long nome: String pedidos: Collection ID (PK) NOME CLIENTE VARCHAR Pedido id: long data: Date total: Float cli: Cliente ID (PK) DATA TOTAL C_ID (FK) PEDIDO DATE REAL

Associações N:N - Mapeam. Estrutural Conceitual data total Pedido * * contem tipo preco Item Projeto Pedido id: long data: Date total: Float itens: Collection ID (PK) DATA TOTAL PEDIDO PxI DATE REAL P_ID (FK) I_ID (FK) Item id: long tipo: String preco: Float pedidos: Collection ID (PK) TIPO PRECO ITEM VARCHAR REAL

Herança - Mapeamento Estrutural As classes da hierarquia podem estar mapeadas para uma mesma tabela, tabelas separadas, ou cada classe em uma tabela diferente*. è Mesma tabela: se as classes são mapeadas para uma mesma tabela, esta tabela deve conter colunas para todos os atributos da superclasse e respecmvas subclasses, além de um atributo discriminador que indica o Mpo do objeto. * Usado em sistemas legados.

Herança - Mapeamento Estrutural Cliente nome cnpj Juridico cpf Fisico Cliente MESMA TABELA id:long nome: String ID (PK) NOME CLIENTE VARCHAR Juridico cnpj: String Fisico cpf:string CNPJ CPF TIPO VARCHAR VARCHAR

Herança - Mapeamento Estrutural As classes da hierarquia podem estar mapeadas para uma mesma tabela ou tabelas separadas, ou cada classe em uma tabela diferente*. è Tabelas separadas: se as classes são mapeadas para tabelas separadas, cada tabela deve conter apenas colunas para os atributos da classe correspondente. Além disso, as tabelas das subclasses devem se referir à tabela da superclasse através de uma chave estrangeira. Neste caso, o atributo discriminador fica na tabela da superclasse raiz.

Herança - Mapeamento Estrutural Cliente nome cnpj Juridico cpf Fisico TABELAS SEPARADAS Cliente CLIENTE id:long nome: String ID (PK) NOME VARCHAR TIPO Juridico cnpj: String JURIDICO ID (PK) (FK) CNPJ VARCHAR Fisico cpf:string ID (PK) (FK) CPF FISICO VARCHAR