Mapeamento Objeto-Relacional Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.

Slides:



Advertisements
Apresentações semelhantes
Java Avançado Luiz Carlos d´Oleron SJCP Hibernate II.
Advertisements

I- Introdução A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados.
Estudo de Caso, modelo Oracle 10g
Maurício Edgar Stivanello
1 Orientação a Objetos: Herança Alcides Calsavara.
Identificação Única de Objetos Alcides Calsavara.
Mapeamento Objeto Relacional
Projeto de Sistema Orientado a Objeto
Bancos de Dados com Objetos
Linguagem de Programação II
Bancos de Dados Orientados a Objeto
ODL Aula experimental no Caché
Sistemas de Informação
Caio Nakashima Hibernate Associação Caio Nakashima
Ferramentas e Tecnologias II
Introdução a JDBC Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.
Introdução a EJB 3.0 Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.
Java Persistence API (JPA) Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.
Roteiro Para o Trabalho do Módulo
UMA ABORDAGEM SOBRE ORIENTAÇÃO A OBJETOS!
Java Persistence Architecture
Mapeamento de Objetos para Tabelas Relacionais
Hibernate com JPA Prática
Curso de extensão em Desenvolvimento Web
Se liga aí, que é hora da revisão!
I- Introdução A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados.
I- Introdução A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados.
Banco de Dados Aplicado ao Desenvolvimento de Software - BDD
Mapeamento de Objetos para o Modelo Relacional - Introdução
Paradigmas da Programação – Semestre 1 – Aula 2 Professores: Eduardo Mantovani Fábio de Paula.
Hibernate Java avançado – PCC Jobson Ronan
Hibernate Java avançado – PCC Jobson Ronan
Classes, Objetos, Atributos e Métodos JAVA
if669 - Introdução à Programação
PHP Orientado a Objetos Análise e Desenvolvimento de Sistemas Prof
Laboratório I Mateus Raeder. Mateus Raeder – fevereiro de 2009 Associação entre classes  Um objeto é a representação de uma entidade do mundo real 
Implementação Orientada a Objetos – Aula 03
Programação Orientada à Objetos
Universidade Católica de Angola Prática de laboratório Fundamentos de Programação II Frei Joaquim José Hangalo.
Orientação a Objetos usando Java
Campus de Caraguatatuba Aula 2: Introdução a Tecnologia de BD
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Classes Abstratas e Interface
Projeto de Sistemas de Informação Prof. Schneider Oracle Object-Relational.
Laboratório de Programação II Pacotes Visibilidade Referências a Objetos.
SEGUNDA FASE / S2B MIC PERNAMBUCO
Persistência e mapeamento objeto relacional
Paradigmas da Programação – Semestre 2 – Aula 1 Professores: Fábio de Paula Santos Eduardo Mantovani
Construtores e Destrutores
Camada de Persistência
Bruno Inojosa MCP .NET Framework
Hibernate: Relacionamentos e Herança
Programação Orientada a Objetos - Java Professor: Jean Carlo Mendes.
Modificadores Programação II.
Linguagem BD + capacidades OO qVariante da representação OO das encomendas EncomTipo = RECORDOF( e#: int, inclui: SETOF( IQTipo ), cliente: ClienteTipo.
Hibernate Universidade Federal do Rio Grande do Sul Instituto de Informática Web e Sistemas de Informação (2004/2005) Objetos Distribuídos Prof. Dr. Cláudio.
Classes abstratas São classes das quais não se pode instanciar objetos. São classes das quais não se pode instanciar objetos. Seu objetivo é ser herdada.
UCSal – Bacharelado em Informática
Módulo II Capítulo 1: Orientação a Objetos
Leo Silva Leonardo Murta Luiz Viana Persistência em Java.
Paradigmas da Programação – Semestre 1 – Aula 7 Professor: Eduardo Mantovani )
Curso Básico de Android
Projetar Base de Dados. Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Projetar base de dados | 2 Objetivos deste.
Implementação Orientada a Objetos – Aula 08 Herança, sobrescrita de métodos e polimorfismo Prof. Danielle Martin Universidade de Mogi das Cruzes
Desenvolvimento WEB II Professora: Kelly de Paula Cunha.
Application Server & EJB3 Wesley Gonçalves da Silva
Introdução à Orientação a Objetos em Java Prof. Gustavo Wagner (Alterações) Slides originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB.
Prof.: Jean Carlo Mendes
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
Modelagem de Banco de Dados: Conceitos
Transcrição da apresentação:

Mapeamento Objeto-Relacional Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída com Java EE

Objetivo da Aula Apresentar como tabelas podem ser mapeadas para objetos e como os objetos devem ser anotados para que esta estratégia possa ser utilizada juntamente com a JPA.

Diferenças de Objetos e Relações Mapeamentos Simples Mapeando Objetos Embutidos Chaves Compostas Mapeando Relacionamentos Mapeando Herança Agenda da Apresentação

Diferenças - Objetos e Tabelas No paradigma orientado a objetos existe realmente um relacionamento entre as classes, enquanto no paradigma relacional o que existe é uma restrição de dados na chave estrangeira. O relacionamento muitos-para-muitos não é suportado diretamente pelo paradigma relacional, necessitando de uma tabela auxiliar para isso. No paradigma orientado a objetos isso já é algo natural. Existem diferenças na tipagem, como String nos objetos e TEXT ou VARCHAR nas tabelas. No paradigma relacional todo relacionamento pode ser recuperado de forma bidirecional, e no paradigma orientado a objetos isso deve ser feito explicitamente e controlado. O paradigma relacional não suporta herança, o que é uma das principais características da orientação a objetos.

Mapeamento Objeto-Relacional Toda classe persistente precisa possuir uma na classe no identificador. No caso de anotações nas propriedades, podem ser anotados os métodos getters ou os public class Cachorro private int idCachorro; //Outras propriedades //Métodos get e set } Uma entidade ainda deve possuir um construtor sem parâmetros public ou protected, além de nem a classe nem os métodos e atributos poderem ser finais.

Mapeando Tabelas e Colunas Utiliza-se as para mapear as classes e public class private int idCachorro; //Outras propriedades //Métodos get e set } Todas as propriedades são persistentes por definição. Caso seja desejado que alguma propriedade não seja persistente é preciso anota-la Se a tabela ou coluna possuir o mesmo nome da classe ou propriedade, não é preciso mapear explicitamente.

Classes Embutidas Muitas vezes faz sentido agrupar um grupo de atributos de uma tabela em uma classe public class Pessoa private int private Endereco endereco; //Outras propriedades } Isto é válido quando a classe embutida possuir alguma lógica de negócio e/ou puder ser reaproveitada para mais de uma public class Endereco { private String rua; private String numero; private String cidade; private String estado; private String CEP; //Getters e Setters }

Chaves Compostas Muitas vezes faz sentido agrupar um grupo de atributos de uma tabela em uma classe public class Pessoa private Identidade id; //Outras propriedades } A implementação do métodos equals() é importante para definir a igualdade entre public class Identidade { private String emissor; private String numero; private String tipo; //Getters e Setters public boolean equals(Object obj){...} }

Relacionamento Um para Um O relacionamento entre objetos é feito a partir de uma propriedade com o tipo da outra public class Pessoa private = "id_end", referencedColumnName = "id_end") private Endereco endereco; //Outras propriedades public class = id_end) private String private Pessoa morador; //Getters e Setters } O lado que possui a chave estrageira no banco é que deve mapear o relacionamento.

Relacionamento Muitos para Um O lado que possui muitos pode possuir uma List, Collection, Set ou public class Pessoa private int private List telefones; //Outras propriedades public class Telefone private = "id_dono", referencedColumnName = "id") private Pessoa dono; //Getters e Setters } O relacionamento pode possuir a propriedade fetch que pode ser LAZY ou EAGER, caso se deseje que o relacionamento seja automaticamente recuperado ou não.

Relacionamento Muitos p/ public class Pessoa private int private List equipes; //Outras propriedades public class Equipe private = "participante", =id_equipe)}, =id_pessoa)}) private List funcionarios; //Getters e Setters } A tabela de relacionamento muitos para muitos não precisa existir na aplicação. Se a tabela de relacionamento possuir algum dado adicional ela precisará ser mapeada como dois relacionamentos um para muitos.

Herança @DiscriminatorColumn(name="TIPO") public abstract public class PessoaFisica public class PessoaJuridica extends Pessoa{…} Flexível e bom para otimizar espaço de armazenamento e quando existem vários relacionamentos em comum.

Herança – @DiscriminatorColumn(name="TIPO") public abstract public class PessoaFisica public class PessoaJuridica extends Pessoa{…} A melhor opção quando é necessário desempenho em consultas polimórficas e espaço de armazenamento não é problema.

Herança – TABLE public abstract class public class PessoaFisica extends public class PessoaJuridica extends Pessoa{…} Indicado quando não existem muitos relacionamentos em comum e a herança é mais conceitual do ponto de vista de negócios