Mapeamento Objeto-Relacional



Documentos relacionados
Hibernate. Mapeamento Objeto-Relacional. Prof. Anselmo Cardoso Paiva Prof. Geraldo Braz Junior

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

Conexão com Banco de Dados

Hibernate na sua aplicação JavaWeb


Aula 4. Carlos Eduardo de Carvalho Dantas

HIBERNATE Criando um projeto em Java + Hibernate do zero

POO Programação Orientada a Objetos

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

Persistência de Dados em Java com JPA e Toplink

Persistência de dados com JPA. Hélder Antero Amaral Nunes

UFG - Instituto de Informática

TECNOLOGIAS DE ACESSO A BASES DE DADOS. Profª Ana Paula Cação Maio de 2018

Persistindo dados com TopLink no NetBeans

JPA Passo a Passo. Henrique Eduardo M. Oliveira henrique@voffice.com.br. Globalcode Open4Education

Mapeamento Lógico/Relacional com JPA

JPA: Persistência padronizada em Java

Aula 2 - Revisão de JPA (Java Persistence API)

Parte II Persistência entre Modelos de Dados

Curso de Java. Acesso a banco de dados através do Hibernate. Todos os direitos reservados Klais

JPA Java Persistence API. Prof. Ramon Chiara

Hibernate. Mapeamento O/R Marcio Aguiar Ribeiro

Framework Hibernate/JPA

Struts 2 : Projeto e Programação Editora: Ciência Moderna Autor: Antunes Budi Kurniawan Número de páginas: 600

JPA - Java Persistence API. Entity. Entity Campos e Propriedades Entity Chaves Primárias Entity Associações. Entity Manager

JPA - Java Persistence API. Entity. Entity Campos e Propriedades Entity Chaves Primárias Entity Associações. Entity Manager

Vamos falar de Hibernate?

Módulo 03. Mapeando Associações/Relacionamentos. Raphaela Galhardo.

JPA Java Persistence API

Aula 2 - Revisão de JPA (Java Persistence API)

JPA Com Hibernate Aula 2

Mapeando Relacionamentos entre Entidades JPA. Prof. Fellipe Aleixo

Java para WEB com Hibernate e Struts 2. Duração 52 horas/aula. Objetvo

Java Persistence API. Entity Entity Campos e Propriedades Entity Chaves Primárias Entity Associações

TUTORIAL SISTEMA DE CONTROLE DE ACESSO

Criar uma aplicação JPA2 com EclipseLink e H2

Introdução. Configuração. Padrão POJO. Framework Pesistência de. Mapeamento Annotation. Objetos. Persistência. Java. Objetos. Prof.

Fernando Kasten Peinado

Hibernate com Anotações

Série Rações Semanais JPA & Hibernate Rogério Araújo

Desenvolvimento Web Ágil Utilizando Framework

1 Criar uma entity a partir de uma web application que usa a Framework JavaServer Faces (JSF)

Escrito por Neri Neitzke Qua, 21 de Dezembro de :34 - Última atualização Dom, 02 de Abril de :04

Mapeamento Objeto-Relacional (Object Relational Mapping)

Introdução ao Hibernate. Hibernate Mapeamento com Anotação. Projeto Desktop Uma Classe. Objetivo. Programas Utilizados

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

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 9- Introdução ao JDBC

Laboratório de Banco de Dados Aula 1 Acesso a Banco de Dados. Prof. Josenildo Silva jcsilva@ifma.edu.br

JPA (Java Persistence API) Marcos Kalinowski

Manual Demoiselle Wizard CETEC/CTCTA

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Departamento de Computação Curso de Análise e Desenvolvimento de Sistemas Modelagem Conceitual de Dados

Agenda. Instalação e configuração. Processamento de comandos SQL com JDBC. Driver JDBC Criação da classe de conexão

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Aula 1 Acesso a Banco de Dados

WebApps em Java com uso de Frameworks

Utilizando Swing com Hibernate

Persistência com JPA2 e Hibernate TREINAMENTOS

SQL Linguagem de Definição de Dados

Lista de Exercícios Dissertativo

Desenvolvimento de Sistemas Cliente - Servidor utilizando JEE, Adobe Flex 4, Swing ou JSF v1.0 Prof. Walter Silvestre Coan

Spring ORM- Object Relational Mapping Utilizando JPA Crislaine da Silva Tripoli

RAPHAEL BARRETO PALHARES DE CAMPOS ANÁLISE COMPARATIVA DE FRAMEWORKS DE PERSISTÊNCIA

Criando uma aplicação web

Lógica e Prog. Java6.0 + Java p/ Web com Hibernate e Struts 2. Duração 124 horas/aula

Particionamento de Banco com o Hibernate Shards

Padrão J2EE Data Access Object (DAO)

JAVA. Professor: Bruno Toledo

Revisão de Bancos de Dados

ALTO DESEMPENHO UTILIZANDO FRAMEWORK HIBERNATE E PADRÃO JAVA PERSISTENCE API

UFG - Instituto de Informática

JDBC JDBC. JDBC - Arquitetura. JDBC Arquitetura Pacote Java.sql. Java Database Connectivity JDBC PostgreSQL

REITORA Ulrika Arns. VICE-REITOR Almir Barros da Silva Santos Neto. DIRETOR DO NTIC Leonardo Bidese de Pinho

BANCO DE DADOS FACSUL 2017 TECNOLOGIA DE REDE DE COMPUTADORES

Tabelas. Banco de Dados I MySQL

J A V A E E 7 JPA. java persistence api. Helder da Rocha

[versão para impressão] Link original: comp=24763 Conhecendo o PL/SQL

AULA 8. Ambientes Visuais 8.1. OBJETIVO DA AULA SQL (Structured Query Language)

SISTEMA DE GERENCIAMENTO DE BANCO DE DADOS - SGBD

Transcrição:

Mapeamento Objeto-Relacional Persistência de dados com Java Persistence API - Hibernate Jefferson S Silva Mapeamento objeto-relacional Mas como? SQL + JDBC!? 1

Para quê serve MOR? O uso de uma solução de mapeamento objetorelacional pode solucionar problemas do tipo: Como devem ser as classes persistentes? Como mapear hierarquias e relações? Como recuperar os dados de associações de forma eficiente? Como gerenciar os recursos necessários: transações, cache, concorrência? Porquê usar MOR? Além da padronização da persistência...!? Produtividade Elimina 90% do código SQL da aplicação Reduz o custo de tratamento de transações, erros, entre outros. Manutenibilidade Menos linhas de código == melhor manutenção Redução drástica do impacto de mudanças na base de dados Desempenho Os recursos da solução de MOR (cache, lazy) podem melhorar o desempenho das buscas Sobra tempo para a equipe trabalhar em otimizações do sistema 2

Mapeamento objeto-relacional com Java Persistente API - JPA O que é JPA A JPA é uma especificações da linguagem Java para a persistência de dados. Atua na camada de persistência de dados. Define o mapeamento objeto-relacional com base em anotações 3

Visão geral Existem algumas implementações Toplink Hibernate GlassFish Todos implementam a solução ORM de acordo com a especificação JPA Têm o formato de arquivos *.jar que adicionados ao classpath da aplicação tornam-se disponíveis A implementação Hibernate Mais conhecida, mais tradicional. Endereço para Download. http://www.hibernate.org Os arquivos necessários. Na pagina de downloads 4

Utilizando a JPA Passos para a utilização Download e instalação; Criação das classes persistentes; Definição do MOR; Configuração da JPA; Criação das tabelas no SGBD; Usar a API de manipulação dos dados. Utilizando a JPA Os arquivos *.jar devem ser referenciados no Build Path da aplicação Com a IDE eclipse fica fácil. Projeto > Propriedades > Java Build Path > Libraries > add JARs... 5

Bibliotecas necessárias antlr asm asm-attrs c3p0 cglib commons-collection commons-logging dom4j ehcache jaxem jdbc2_0-stdext jta log4j Bibliotecas necessárias As mais importantes hibernate3 ejb3-persistence hibernate-annotations Hibernate-entitymanager 6

Agora deixando de conversa!!!! JPA Annotations Propriedades 7

JPA Annotations Propriedades Quer que uma entidade seja persistente? Anote a classe (POJO) com @Entity JPA Annotations Propriedades Quer que uma propriedade seja persistida? O nome da propriedade corresponde ao nome de campo que a representa na tabela? Então não anote, ela será persistida automaticamente. 8

JPA Annotations Propriedades Não quer que uma propriedade seja persistida? Anote a propriedade com @transient JPA Annotations Propriedades A propriedade não tem o mesmo nome da coluna no banco? Anote a propriedade com @Column 9

JPA Annotations Propriedades Quer que a propriedade seja o identificador do objeto? Anote a propriedade com @Id JPA Annotations Propriedades Quer definir a estratégia de geração de Ids? basta utilizar a anotação @GeneratedValue e definir a estratégia. 10

JPA Annotations Propriedades E a entidade? Tem o mesmo nome da tabela em que será armazenada? Se não, defina a tabela com a anotação @Table JPA Annotations Propriedades Anotações para propriedades do tipo de dados simples @Transciente: Não será persistida no banco @Basic: define tipo numéricos, booleanos, Strings, etc. @Temporal: define datas e horas @Lob: define textos ou binários grandes Default : @Basic 11

JPA Annotations Relacionamentos JPA Annotations Relacionamentos A entidade possui uma propriedade composta cujo tipo é uma outra entidade? Use a anotação @OneToOne em uma propriedade do tipo correspondente. 12

JPA Annotations Relacionamentos Entendendo o OneToOne Pessoa Ramal JPA Annotations Relacionamentos A entidade faz parte de uma coleção de entidades de outras entidade? Use a anotação @ManyToOne para uma propriedade que representará a entidade dona da coleção. Ramal 13

JPA Annotations Relacionamentos A entidade possui uma coleção de outras entidades? Use a anotação @OneToMany para uma propriedade que representará a coleção Pessoa JPA Annotations Relacionamentos Relacionamento bidirecional Um-para-muitos 14

JPA Annotations Relacionamentos Duas entidades possuem coleções umas das outras? Então ambas entidades terão propriedades de coleção com a anotação @ManyToMany JPA Annotations Relacionamentos Entendendo o ManyToMany 15

CascadeType.PERSIST Em uma operação de persistência, a entidade possuidora é persistida em conjunto com a entidade que a completa, não sendo necessária a operação de persistência manual da outra entidade! CascadeType.MERGE A sincronização no banco de dados é realizada automaticamente para as entidades que completam uma entidade principal. 16

CascadeType.REMOVE Remoção em cascata A entidade E2 associada a entidade E1, também será removida! CascadeType.REFRESH Parecido com MERGE Atualiza a instância do objeto a partir do Banco de Dados As entidades relacionadas também serão atualizadas 17

JPA Annotations Configurações JPA Annotations Configurações Algumas possibilidades diferentes Hibernate.cfg.xml Persistence.xml Hibernate.properties 18

JPA Annotations Configurações Descrição das unidades de persistência. Provedor de persistência Dialeto usado para manipulação Driver usado para acessar o banco de dados Usuário do banco de dados Senha do banco de dados Url do banco de dados As entidades que farão parte do contexto. Varias outras configuração como: Configuração do pool de conexões Controle sobre as ações do hibernate sobre o banco Etc... JPA Annotations Configurações O mais interessante! Definir vários contextos diferentes de acordo com as necessidades e identificá-los pelo nome 19

JPA Annotations Configurações JPA Annotations Configurações Dialect: É uma classe que faz o cruzamento das funções do hibernate com as funções do banco de dados. Por exemplo, no Hibernate não temos a função Ltrim, mas utilizando o dialect para o Oracle este já estará disponível para utilização. Possiveis valores: DB2 - org.hibernate.dialect.db2dialect HypersonicSQL - org.hibernate.dialect.hsqldialect Informix - org.hibernate.dialect.informixdialect Ingres - org.hibernate.dialect.ingresdialect Interbase - org.hibernate.dialect.interbasedialect Pointbase - org.hibernate.dialect.pointbasedialect PostgreSQL - org.hibernate.dialect.postgresqldialect Mckoi SQL - org.hibernate.dialect.mckoidialect Microsoft SQL Server - org.hibernate.dialect.sqlserverdialect MySQL - org.hibernate.dialect.mysqldialect 20

JPA Annotations Configurações hbm2ddl.auto: Esta propriedade indica ao hibernate que ele deverá atualizar o schema do banco de dados ao inicializar a aplicação, ou seja, atualizar tabelas, indices, entre outros com seus arquivos de mapeamento. Por exemplo, se no arquivo de mapeamento tiver um campo e no banco de dados não tiver, ele fará um ALTER TABLE para adicionar este campo. Os possiveis valores são: create - apenas cria as tabelas e indices, se já tiverem sido criados não faz nada create-drop - apaga o schema e o recria. update - faz sincronismo entre XML de mapeamento e banco de dados. show_sql: Esta propriedade indica ao hibernate se deverá ou não logar todos os comandos SQL. Os possiveis valores são: true ou false. Manuseando os objetos 21

Entendendo o ciclo de vida dos objetos Estados do ciclo de vida Objetos transiente Obtidos através da keyword new. Objetos simples do Java, ainda não passados para o hibernate. Não podem ter associações com objetos persistentes(persistência transitiva) Não possuem representação no banco. Não possuem identidade 22

Estados do ciclo de vida Objetos persistentes Possuem representação no banco de dados, inclusive identidade. Objetos recuperados do banco pelo Hibernate diretamente ou por transitividade; Estão sempre associados a um objeto Session ou EntityManager. Estados do ciclo de vida Objetos destacados (Detached) Objetos que foram persistentes ou transientes mas que não estão mais associados a um contexto persistente; Quando uma session fecha, os objetos ainda abertos tornam-se destacados; Não há garantias de que esses objetos serão sincronizados. Eles podem ser re-associados através do metodo save(), update() ou save-update(); 23

Estados do ciclo de vida Objetos persistentes = Objetos transacionais Um objeto associados a uma session participa de uma transação e seu estado é atualizados ao final desta(ou em sincronizações). Se dynamic-update = true o Hibernate atualiza somente as propriedades alteradas, se false, atualiza todo objeto, mas somente os que foram alterados; Os objetos são gerenciados dinamicamente pelo proxy do Hibernate. Isso quer dizer, que objetos persistentes são espelhos do banco de dados mantidos em cache pelo Hibernate. E não uma ligação direta com ele. O gerenciador de objetos EntityManager O que ele provê: Operações CRUD básicas; Execução de consultas; Controle de transações; Gerencia de cache; 24

JPA estratégias de recuperação de objetos Recuperação preguiçosa ( Lazy): Sob demanda; Recuperação adiantada (eager): uso de outer joins; Mãos a obra 25

Estrutura do projeto Estrutura Adicionando os arquivos *.jar da implementação Hibernate 26

Adicionando os jars A fonte Fazer o donwload ( http://www.hibernate.org/6.html ) Descompactar os arquivos Copiar os arquivos *.jar para a aplicação Adiciona ao Build Path Adicionando os jars Para adicionar ao build path: projeto > propriedades > libraries > add JARs... 27

Mapeando as propriedades Mapeando os objetos - Ramal Mapeando a Entidade Ramal 28

Mapeando os objetos - Ramal Mapeando o identificador da entidade Mapeando os objetos - Ramal Mapeando a propriedade da entidade Ou 29

Mapeando os objetos - Pessoa Mapeando os objetos - Usuario 30

Mapeando os objetos - herança Pessoa-Usuario Entidade Pessoa Entidade Usuario Mapeando os relacionamentos 31

Mapeando as coleções: uma pessoa para muitos ramais Entidade Pessoa Entidade Ramal Mapeando as coleções: uma pessoa para muitos ramais Lembrando do banco. 32

Mapeando as coleções: Muitas pessoa para muitos ramais Entidade Pessoa Entidade Ramal Mapeando as coleções: Muitas pessoa para muitos ramais Lembrando do banco 33

Mapeando as coleções: Muitas pessoa para muitos ramais Identificar posição das chaves Entidade que se está mapeando 34