Buscar

Mapeamento Objeto-Relacional com JPA e Hibernate

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Roteiro
Mapeamento Objeto-Relacional
JPA
Anotações
Hibernate
Mapeamento Objeto-Relacional
Mapeamento objeto-relacional (ORM) é a técnica de mapear dados originalmente armazenados de forma relacional em um modelo de objetos;
Neste contexto, busca-se utilizar a eficiência e ampla utilização dos bancos de dados relacionais com a programação orientada a objeto;
De outra forma, podemos dizer também que, o mapeamento permite reduzir a impedância da programação orientada a objetos em banco de dados relacionais. 
Persistência
De modo geral, persistência significa continuar a existir, preservar, durar longo tempo ou permanecer. No contexto de programação orientada a objeto, a persistência significa a possibilidade desses objetos serem armazenados em meio externo à aplicação, portanto, deverá permitir que esses objetos não sejam voláteis. 
Atualmente, os bancos de dados relacionais são o meio mais utilizado para isso, porém não são os únicos. 
JPA – Java Persistence API
Consiste de um conjunto de interfaces e anotações que visam padronizar o acesso aos frameworks de MOR e se baseia nas melhores práticas de tecnologias de persistência como Hibernate, TopLink e JDO;
Solução completa para mapeamento e persistência de objetos: modo declarativo de descrever MOR, linguagem de consulta e ferramentas para manipular entidades;
A JPA foi introduzida com a plataforma Java EE5;
Desenvolvida como parte da JSR-220 - Tecnologia EJB 3.0, a JPA se integra de homogênea e consistente nas APIs EJB 3.0;
Provê à comunidade Java uma única API padrão de persistência, com a liberdade de escolha do provedor (implementação);
Rapidamente os frameworks se adaptaram para funcionar como provedores JPA, incluindo recursos que permitam utilizar o padrão JPA para a construção de camadas de persistência.
JPA – Java Persistence API
Arquitetura
JPA - Anotações
	A JPA define um meio de mapeamento Objeto-Relacional para objetos Java simples e comuns (POJOS).
“Basicamente, uma anotação é uma maneira de acrescentar informações sobre uma parte do código (no mundo Java, geralmente uma classe, um campo ou método) para ajudar as ferramentas entenderem como o código está sendo utilizado ou para permitir a automatização, poupando trabalho”. (Elliott, 2009)
JPA - Anotações
Anotações utilizando JPA
JPA - Anotações
Anotações utilizando JPA (continuação)
JPA - Anotações
Anotações – Mapeamento de Associações
JPA - Anotações
Anotações – Mapeamento de Associações (continuação)
JPA - Anotações
Anotações – Mapeamento de Associações
JPA - Anotações
Anotações – Mapeamento de Associações (continuação)
JPA - Anotações
Anotações – Mapeamento de Herança
JPA - Anotações
Anotações – Mapeamento de Herança
JPA - Anotações
Exemplo simples de mapeamento
	@Entity anotação associa classes Java. Determina que a classe é persistente.
	@Id toda classe precisa ter um identificador, que será associado a chave primária da tabela no banco de dados. Atributos anotados com @Id serão identificadores, tanto para as instâncias de objetos da classe que está sendo mapeada como para os registros da respectiva tabela no banco de dados.
JPA - Anotações
Exemplo simples de mapeamento
	@Table define o nome da tabela no banco de dados
	@SequenceGenerator mapeia uma seqüência do BD
	@GeneratedValue permite gerar o código usando a seqüência mapeada.	
JPA - Anotações
Exemplo simples de mapeamento
	Gerar o Id com uso da função de agregação MAX().
	Observe que @GenericGenerator é uma anotação específica do Hibernate.
JPA - Anotações
Exemplo simples de mapeamento
	@Column por padrão, a JPA assume que o nome de cada atributo corresponde ao mesmo nome na tabela. Para modificar o mapeamento para uma coluna com o nome diferente do atributo, deve-se utilizar o atributo name, conforme acima.
JPA - Anotações
Exemplo simples de mapeamento
	Outros atributos para a anotação @Column podem ser adicionados, como os seguintes:
name (String: nome do campo na tabela)
nullable (boolean)
length (int)
Scale (int)
unique (boolean)
JPA - Anotações
Exemplo simples de mapeamento
	@Temporal para informações relacionadas ao tempo (DATE, TIME e TIMESTAMP)
JPA - Anotações
Exemplo simples de mapeamento
	As quatro anotações apresentadas a seguir podem ser usadas para mapear associações:
@OneToOne
@OneToMany
@ManyToOne
@ManyToMany
Em muitos casos, colocar a anotação no atributo da associação é o suficiente.
Em alguns casos, é necessário definir alguns parâmetros para as anotações.
JPA - Anotações
Para uma associação do tipo N para 1 ou N:1
JPA - Anotações
Para uma associação do tipo N para 1 ou N:1
	@JoinColumn permite definir o nome da coluna que será utilizada na tabela do BD para estabelecer a associação.
JPA - Anotações
Para uma associação do tipo 1 para 1 ou 1:1
Usando a chave primária compartilhada
JPA - Anotações
Para uma associação do tipo 1 para 1 ou 1:1
Usando a chave primária diferente
JPA - Anotações
Para uma associação do tipo N para M ou N:M
@ManyToMany é usada em conjunto com a anotação @JoinTable é opcional e permite definir uma tabela associativa no BD.
Tabelas associativas são utilizadas em SGBDs relacionais para implementar uma associação muitos para muitos. muitos para muitos.
Propriedades
joinColumns: Colunas que identificam a chave da entidade
inverseJoinColumns: Colunas que identificam a chave da entidade de destino / target entity
JPA - Anotações
Para uma associação do tipo N para M ou N:M
JPA - Anotações
Estratégias para Mapeamento de Herança
Podemos, ainda, dividir em: uma tabela por classe, todas as classe em uma tabela e uma tabela para cada subclasse
JPA - Anotações
Mapeamento para uma chave composta
Hibernate
O Hibernate é um framework para o Mapeamento Objeto-Relacional (ORM) escrito na linguagem Java, mas também está disponível em .Net como o nome Nhibernate;
O principal objetivo do Hibernate é diminuir a complexidade entre os programas Java, baseado no modelo orientado a objeto, que precisam trabalhar com um banco de dados do modelo relacional (presente na maioria dos SGDBs);
Sua principal característica é a transformação das classes em Java para tabelas de dados e dos tipos de dados Java para os da linguagem SQL.
Hibernate
Permite uma persistência transparente para o desenvolvimento das aplicações;
Facilita o mapeamento dos atributos entre uma base de dados relacionais e o modelo de objetos de uma aplicação;
Usa arquivos XML ou Anotações na próprias classes para estabelecer esta relação;
Está na terceira versão (consolidado); 
É um software livre de código aberto distribuído coma licença LGPL.
Hibernate
O Hibernate define estes três tipos de estados: persistentes, transientes e detached. Objetos com esses estados são definidos como a seguir: 
Objetos Transientes: são objetos que suas instâncias não estão nem estiveram associados a algum contexto persistente. Eles são instanciados, utilizados e após a sua destruição não podem ser reconstruídos automaticamente; 
Objetos Persistentes: são objetos que suas instâncias estão associadas a um contexto persistente, ou seja, tem uma identidade de banco de dados. 
Objetos detached: são objetos que tiveram suas instâncias associadas a um contexto persistente, mas que por algum motivo deixaram de ser associadas, por exemplo, por fechamento de sessão, finalização de sessão. São objetos em
um estado intermediário, nem são transientes nem persistentes. 
Hibernate 
Arquitetura
 Camada de 
 manipulação dos 
 objetos
 Camada de 
 conexão do 
 SGBD
Hands On
Baixar o Hibernate Core
	http://www.hibernate.org/downloads.html
	Necessários
	
Gramática linguagem
Biblioteca geração 
de código
Estrutura de dados
Framework XML
Framework Hibernate
Assistente Java
Transação
Logs
Hands On
Configuração da persistence.xml
Ao criar um projeto, certifique-se que o arquivo persistence.xml esteja no diretório src/META-INF.
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando