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

Documentos relacionados
Conexão com Banco de Dados

Criando uma aplicação web. Parte 1

UNIVERSIDADE FEDERAL DO PIAUÍ DEPARTAMENTO DE COMPUTÇÃO DISCIPLINA: ENGENHARIA DE SOFTWARE II PROFESSOR: ARMANDO SOARES

UFG - Instituto de Informática

Criando uma aplicação web

JPA Com Hibernate Aula 2

Hibernate na sua aplicação JavaWeb

API JDBC. Paulo Ricardo Lisboa de Almeida. 1 Universidade Positivo

Mapeamento Objeto-Relacional

JAVA ENTERPRISE EDITION: CRIAR BEANS DE ENTIDADE A PARTIR DE TABELAS

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

JPA Com Hibernate. Paulo Ricardo Lisboa de Almeida. Dados Transientes e Relacionamentos. 1 Universidade Positivo


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

Continuação... Criando a Interface e adiante

Mapeamento Lógico/Relacional com JPA

AULA 07 HIBERNATE. Ao término desse capítulo você terá aprendido: Fundamentos do MVC Estrutura dos pacotes no NetBeans

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

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

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

POO Programação Orientada a Objetos

Aula Extra Configuração do Eclipse com Hibernate

Carlos S. Rodrigues Leonardo Lino Vieira Eric Felipe Barboza Antonio Vasconcellos

Aula Prática JBCD - Introdução

Criar uma aplicação JPA2 com EclipseLink e H2

Persistência com JPA2 e Hibernate TREINAMENTOS

Framework Hibernate/JPA

Hibernate. Mapeamento O/R Marcio Aguiar Ribeiro

JPA DAO Genérico e JPQL

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

Herança entre Entidades JPA. Prof. Fellipe Aleixo

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

UTILIZAÇÃO DO FRAMEWORK HIBERNATE NA CONSTRUÇÃO DE UM SISTEMA DE INFORMAÇÃO

PROGRAMAÇÃO ORIENTADA A OBJETOS II -CRIANDO UM BD POSTGRESQL. Prof. Angelo Augusto Frozza, M.Sc.

Persistência de Objetos

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

JPA Java Persistence API. Prof. Ramon Chiara

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

Persistência BD / drivers

Padrão J2EE Data Access Object (DAO)

Mapeamento da herança em JPA

Código PD0017. Este documento ter por objetivo auxiliar o usuário no entendimento e utilização do Nexus.

Mecanismo de Persistência

Persistindo dados com TopLink no NetBeans

Repositórios JPA no Projeto ecafeteria

Hibernate Anotations

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

Conexão do Banco de Dados localhost

UFG - Instituto de Informática

Técni n c i as e L i L n i g n u g age g ns n p ara r Ba B nc n o d e D ados I ACCESS

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

JPA Demonstração das estratégias optimistic locking e pessimistic locking

PROGRAMAÇÃO SERVIDOR MIDDLEWARE JDBC: USANDO O JAVA DB EM SISTEMAS WEB. Prof. Dr. Daniel Caetano

Manual Converte-MV S_Line

A linguagem SQL

Utilizando Swing com Hibernate

Enums em Java: utilização e persistência

Android e Bancos de Dados

Parte III Persistência entre Modelos de Dados

Android e Bancos de Dados

TUTORIAL INTEGRAÇÃO SPRING, HIBERNATE E MYSQL

BCD29008 Banco de dados

Persistência com JPA2 e Hibernate TREINAMENTOS

INE 5612 Professor: Frank Siqueira. Leonardo Silva Jean Ercilio Thiago

Vamos falar de Hibernate?

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

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

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

Demoiselle Component

Persistência de Dados em Java com JPA e Toplink

Tecnologias Java JDBC. Marcio Seiji Oyamada

Projeto Final Curso de Java Básico

Banco de Dados I Introdução SQL

JPA 2.0 e Servlet 3.0

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

Spring Framework. Parte 04 transações

Figura 1: Eclipse criação de um Dynamic Web Project

Injeção de Dependências e Spring

Tabelas. Banco de Dados I MySQL

JAVA. Professor: Bruno Toledo

Armazenando Dados em Aplicações Java Parte 3 de 3: Analisando as opções

PERSISTÊNCIA EM JAVA. Introdução. Conexão a banco de dados através do driver JDBC UNIDADEE

MANUAL DE CONFIGURAÇÃO DO SMS NO TASY

CONFIGURAÇÃO LABORATÓRIO DE APOIO

JPA: Persistência padronizada em Java

Session Bean Stateful

Web Services REST JAX-RS

Mapeando Relacionamentos entre Entidades JPA. Prof. Fellipe Aleixo

PCS Laboratório de Engenharia de Software I Tutorial de Modelagem de Dados no RSA v9.5 (por Michelet dal Carpio Chávez)

PLATAFORMA SIGA RIO DAS VELHAS MANUAL DO CÓDIGO FONTE

UNIVERSIDADE REGIONAL DE BLUMENAU CENTRO DE CIÊNCIAS EXATAS E NATURAIS CURSO DE CIENCIAS DA COMPUTAÇÃO

PCS3413. Engenharia de So-ware e Banco de Dados. Aula 16. Escola Politécnica da Universidade de São Paulo

JPA Demonstração das Estratégias Optimistic Locking e Pessimistic Locking

Identificadores Nome de variáveis, constantes, métodos, etc...

Manual do Usuário Assinador Prodist e-financeira

Transcrição:

JPA Com Hibernate Paulo Ricardo Lisboa de Almeida 1

Modelo Necessário Modelo Necessário 2

JPA Mapeamento Direto entre as classes e o banco de dados Orientação a objetos para modelo relacional Feito através de xml ou de anotações Java Durante o curso utilizaremos anotações 3

JPA Especificação e conjunto de interfaces Pacote javax.persistence Uma engine que implementa o JPA deve ser plugável Devemos ser capazes de trocar uma engine por outra sem problemas Exemplos de implementações do JPA (engines) Hibernate e EclipseLink Será utilizado o Hibernate durante o curso 4

Criando um Projeto com JPA Da mesma forma que com JDBC Crie um Novo Projeto Java Adicione o.jar do Driver JDBC do Banco ao Projeto (buildpath) Baixe as dependências necessárias do Hibernate em www.hibernate.org Utilizaremos o Hibernate 5.2.0-final Descompacte a pasta do Hibernate e adicione todos os jars que estão dentro de lib/required no buildpath do projeto 5

Criando um Projeto JPA Dentro da pasta source (src) do projeto, crie uma pasta chamada META-INF Dentro desta pasta insira o arquivo persistence.xml disponível no site da disciplina O persistence.xml contém as configurações do banco de dados e do Hibernate, como a string de conexão, o nome de usuário, o modo de conexão,... 6

Algumas Propriedades do persistence.xml Propriedades do JPA driver nome completo da classe do driver de conexão url definição da localização do banco e o nome da base user usuário do banco de dados password senha do usuário 7

Algumas Propriedades do persistence.xml Propriedades do Hibernate dialect define qual variação do SQL será utilizada hbm2ddl.auto valida e exporta o esquema DDL para a base de dados Nunca utilizar essa opção, exceto para aplicações de teste show_sql define quando mostrar no log as consultas SQL geradas format_sql formata o log das consultas SQL geradas 8

Criando um Mapeamento Criam-se Beans para as entidades do banco (Da mesma forma que fizemos para JDBC) public class Pessoa { private Integer id; private Long cpf; private String nome; private Date nascimento; //... } 9

Criando um Mapeamento - Anotações Para informar o JPA que o Bean é uma entidade mapeada no Banco, podemos utilizar as seguintes anotaçẽos na classe @Entity Indica que a classe é mapeada em uma tabela no banco Deve aparecer antes do nome de uma classe @Table(name = "NOME_DA_TABELA_BANCO") Diz qual o nome da tabela para qual a entidade será mapeada Opcional caso o nome da tabela e da classe sejam os mesmos 10

Criando um Mapeamento Anotações Nos Atributos Os atributos também podem receber diversas anotações. Algumas delas: @Id Indica qual é o atributo mapeado como chave primária no banco. Toda entidade deve ter um ID. @GeneratedValue Geralmente acompanhado da anotação @Id Indica que o valor do campo é gerado automaticamente @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private Integer id; 11

Criando um Mapeamento Anotações Nos Atributos @Column Define várias propriedades dos atributos que são mapeados para as colunas das tabelas. Dentre eles: name="nomecoluna" Define o nome da coluna para a qual o atributo é mapeado Necessário somente se o nome da coluna e do atributo forem diferentes lenght=valor Define a quantidade de caracteres de um campo string nullable = true ou false Define se o campo pode receber valores nulos unique=true ou false Define se a coluna pode ter valores repetidos ou não Ex.: o campo cpf deve ser marcado como unique, pois duas pessoas não podem ter o mesmo cpf 12

Criando um Mapeamento Anotações Nos Atributos Propriedades de @Column (Continuação) precision=valor Define a quantidade de dígitos de um número decimal scale=valor Determina a quantidade de casas decimais de um número Exemplo com precision e scale, onde temperaturaatual é armazenada com 4 dígitos, dos quais 2 representam as casas decimais. @Column ( precision =4, scale =2) private BigDecimal temperaturaatual; 13

Exemplo de Mapeamento @Entity @Table(name="Pessoa") public class Pessoa { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) @Column(name="pessoa_id", updatable=false) private Integer id; @Column(nullable=false, unique=true) private Long cpf; @Column(length=50, nullable=false) private String nome; @Column(nullable=true) private Date nascimento; // } 14

Hashcode e Equals Para que o JPA funcione corretamente você deve implementar HashCode e Equals em todos os seus Beans Boa prática de programação independentemente se estamos ou não utilizando JPA Implementar para todas as entidades é uma prática ainda melhor Bons documentos com diretivas para implementação do hashcode e Equals Joshua Bloch. Effective Java: 2nd Edition. 2008. Documentação da Oracle Veja a especificação de Object 15

Manipulando Dados no Banco Utiliza-se a classe EntityManager Cria-se um EntityManager através do Factory EntityManagerFactory O parâmetro nome_unidade_persistencia define qual unidade de persistência definida no persistence.xml será utilizada No nosso projeto ele se chama clinica_pu EntityManagerFactory factory = Persistence.createEntityManagerFactory("nome_unidade_persistencia"); EntityManager em = factory.createentitymanager(); 16

Métodos do EntityManager para Manipular os Dados persist(entidade) Armazenar entidade no banco find(entidade.class, identidade) Recupera a entidade com o id desejado do banco getreference(entidade.class, identidade) Recupera a entidade, mas suas propriedades somente são carregadas quando necessário Somente um proxy é recebido remove(entidade) Remove a entidade do banco Utilizar o find antes para carregar a entidade, para depois removê-la O objeto deve estar atachado para ser removido 17

Transações Para executar um método do EntityManager a fim de manipular os dados, uma transação deve existir. Exemplo: Animal animal = null; em.gettransaction().begin(); animal = em.find(animal.class, 3); em.gettransaction().commit(); Onde begin inicia uma conexão e uma transação Commit envia as alterações ao banco, fecha a transação e a conexão Esses comportamentos são os padrão, e podem ser modificados no persistense.xml 18

Transações Para executar um método do EntityManager a fim de manipular os dados, uma transação deve existir. Exemplo: Animal animal = null; em.gettransaction().begin(); animal = em.find(animal.class, 3); em.gettransaction().commit(); Onde begin inicia uma conexão e uma transação Commit envia as alterações ao banco, fecha a transação e a conexão Esses comportamentos são os padrão, e podem ser modificados no persistense.xml Caso necessário, podemos fazer um rollback através de em.gettransaction().rollback(); 19

Fim! Resolva os exercícios propostos! 20