UFG - Instituto de Informática



Documentos relacionados
Persistência com JPA2 e Hibernate TREINAMENTOS

UFG - Instituto de Informática

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

Mapeamento Lógico/Relacional com JPA


UFG - Instituto de Informática

JPA: Persistência padronizada em Java

Criar uma aplicação JPA2 com EclipseLink e H2

Hibernate. Mapeamento O/R Marcio Aguiar Ribeiro

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

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

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

JPA Java Persistence API. Prof. Ramon Chiara

Persistindo dados com TopLink no NetBeans

UFG - Instituto de Informática

Persistência de Dados em Java com JPA e Toplink

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

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

HIBERNATE EM APLICAÇÃO JAVA WEB

Auditando persistência com JPA

Programação com Acesso a Banco de Dados

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

Persistência com JPA2 e Hibernate TREINAMENTOS

Introdução à JPA-Java Persistence API

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

Manipulação de Banco de Dados com Java. Ms. Bruno Crestani Calegaro Maio/ 2015

Aula 1 Acesso a Banco de Dados

Resolvendo objeto-relacional impedance mismatch com hibernate

Framework utilizando reflexão e aspectos para persistência de objetos em java

Desenvolvimento Web com JSF2 e JPA2

Java Persistence API (JPA)

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

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

Desenvolvimento Web com JSF2 e JPA2

JPA e Hibernate por Thiago Faria e Normandes Junior

Hibernate na sua aplicação JavaWeb

Etc & Tal. Volume 2 - Número 1 - Abril 2009 SBC HORIZONTES 44

Figura 1. A Classe Java

HIBERNATE Criando um projeto em Java + Hibernate do zero

TUTORIAL SISTEMA DE CONTROLE DE ACESSO

Uma Abordagem sobre Mapeamento Objeto Relacional com Hibernate

ATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS

Persistência de Classes em Tabelas de Banco de Dados

Auditoria Avançada de Persistência com Hibernate, JPA e Envers

Criando um CRUD RESTful com Jersey, JPA e MySQL

Conexão com Banco de Dados

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

PHP INTEGRAÇÃO COM MYSQL PARTE 1

Tecnologias Java JDBC. Marcio Seiji Oyamada

JPA (Java Persistence API) Marcos Kalinowski

Hibernate Envers Easy Entity Auditing

PERSISTÊNCIA EM BANCO DE DADOS: UM ESTUDO PRÁTICO

Programação de Computadores - I. Profª Beatriz Profº Israel

Transações Seguras em Bancos de Dados (MySQL)

Android e Bancos de Dados

Aula 4. Carlos Eduardo de Carvalho Dantas

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

O EMF Eclipse Modeling Framework. Pasteur Ottoni de Miranda Junior

Desmistificando o Hibernate Envers em 10 passos

LINGUAGEM DE BANCO DE DADOS

Analisando a performance das Estratégias que realizam o Mapeamento Objeto Relacional no JPA

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

Leonardo Gresta Paulino Murta

BANCO DE DADOS: SQL. Edson Anibal de Macedo Reis Batista. 27 de janeiro de 2010

Antes de iniciar execute o script do banco de dados no SQLYOG ou outra ferramenta de sua preferência

Trabalhando com conexão ao banco de dados MySQL no Lazarus. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

Desenvolvimento Web TCC Turma A-1

Integrando Java com Banco de Dados

PHP INTEGRAÇÃO COM MYSQL PARTE 2

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

Evento.java. package dominio;

Padrão J2EE Data Access Object (DAO)

JDBC. Siga as instruções para instalar o banco de dados H2 e criar a tabela Alunos.

Banco de Dados. Sérgio Luiz Ruivace Cerqueira

Orientação a Objetos

Manipulação de Banco de Dados com Java 1. Objetivos

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

Introdução à Engenharia da Computação. Banco de Dados Professor Machado

SISTEMA TYR DIAGRAMAS DE CLASSE E SEQUÊNCIA Empresa: Academia Universitária

Java e Banco de Dados: JDBC, Hibernate e JPA

Java & Bancos de Dados Adaptado de Slides da Universidade Salgado de Oliveira Goiânia

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

Criando Banco de Dados, Tabelas e Campos através do HeidiSQL. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

Classes de Entidades Persistentes JDB

Migrations for Java EVOLUINDO SEU BANCO DE MANEIRA INCREMENTAL

Disciplina: Unidade V: Prof.: Período:

Mapeamento Objeto-Relacional

Novatec Editora Ltda. [2014].

Programação Orientada a Objetos JDBC Java Database Connectivity

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL.

JPA 2: os novos recursos inspirados no Hibernate

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

JDBC Java Database Connectivity

Automatização de testes de persistência com FIT, DBUnit e HSQLDB

Transcrição:

UFG - Instituto de Informática Curso: Sistemas de Informações Arquitetura de Software Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 7 JPA

A Persistência com JPA Para configurar o JPA em uma aplicação, devemos criar um arquivo chamado persistence.xml. O conteúdo desse arquivo contéminformações sobre o banco de dados, como a url de conexão, usuário e senha, além de dados sobre a implementação JPA que será utilizada.

O arquivo persistence.xml O arquivo persistence.xml deve ser salvo em uma pasta chamada META-INF, que deve estar no classpath da aplicação. Um exemplo a seguir de configuração para o persistence.xml:

Exemplo do persistence.xml 1 < persistence version =" 2.0 " 2 xmlns =" http: // java. sun. com / xml /ns/ persistence " 3 xmlns:xsi =" http: // www.w3. org /2001/ XMLSchema - instance " 4 xsi:schemalocation =" http: // java. sun. com / xml /ns/ persistence 5 http: // java. sun. com / xml /ns/ persistence / persistence_2_0. xsd "> 6 7 <persistence - unit name ="K19 -PU" transaction - type =" RESOURCE_LOCAL "> 8 <provider >org. hibernate. ejb. HibernatePersistence </ provider > 9 <properties > 10 <property name =" hibernate. dialect " 11 value =" org. hibernate. dialect. MySQL5InnoDBDialect "/> 12 <property name =" hibernate. hbm2ddl. auto " value =" update "/> 13 <property name =" hibernate. show_sql " value =" true "/> 14 <property name =" javax. persistence. jdbc. driver " value =" com. mysql. jdbc. Driver "/> 15 <property name =" javax. persistence. jdbc. user " value =" usuario "/> 16 <property name =" javax. persistence. jdbc. password " value =" senha "/> 17 <property name =" javax. persistence. jdbc. url " 18 value =" jdbc:mysql: // localhost:3306 / k19_bd "/> 19 </ properties > 20 </ persistence - unit > 21 </ persistence >

Mapeamento Um dos principais objetivos dos frameworks ORM é estabelecer o mapeamento entre os conceitos do modelo orientado a objetos e os conceitos do modelo relacional. Este mapeamento pode ser definido através de xml ou de maneira mais prática com anotações Java. Quando utilizamos anotações, evitamos a criação de extensos arquivos em xml.

Anotações JPA Em seguida iremos ver as principais anotações Java de mapeamento do JPA. Essas anotações estão no pacote javax.persistence.

@Entity @Entity É a principal anotação do JPA. Ela deve aparecer antes do nome de uma classe e deve ser definida em todas as classes que terão objetos persistidos no banco de dados. As classes anotadas com @Entity são mapeadas para tabelas. Por convenção, as tabelas possuem os mesmos nomes das classes. Mas, podemos alterar esse comportamento utilizando a anotação @Table. Os atributos declarados em uma classe anotada com @Entity são mapeados para colunas natabela correspondente à classe. Outra vez, por convenção, as colunas possuem os mesmos nomes dos atributos. E novamente, podemos alterar esse padrão utilizando para isso a anotação @Column.

@Id @Id É utilizada para indicar qual atributo de uma classe anotada com @Entity será mapeado para a chave primária da tabela correspondente à classe. Geralmente o atributo anotado com @Id é do tipo Long.

@GeneratedValue @GeneratedValue Geralmente vem acompanhado da anotação @Id. Serve para indicar que o valor de um atributo que compõe uma chave primária deve ser gerado pelo banco nomomento em que um novo registro é inserido.

Exemplo de classe anotada 1 @Entity 2 public class Editora { 3 @Id @GeneratedValue 4 private Long id; 5 6 private String nome ; 7 8 private String email ; 9 10 // GETTERS E SETTERS 11 }

Geração do Banco de Dados Uma das vantagens de utilizar uma implementação JPA é que ela é capaz de gerar as tabelas no banco de dados. Ela faz isso de acordo com as anotações colocadas nas classes e as informações presentes no arquivo persistence.xml.

Geração do Banco de Dados As tabelas são geradas através de um método estático da classe Persistence, o createentitymanagerfactory(string persistenceunit). Persistence.createEntityManagerFactory ("K19 -PU"); O parâmetro persistenceunit permite escolher, pelo nome, uma unidade de persistência definida no persistence.xml.

Manipulando Entidades Para manipular as entidades da nossa aplicação, devemos utilizar um EntityManager que é obtido através de uma EntityManagerFactory. 1 EntityManagerFactory factory = 2 Persistence. createentitymanagerfactory ("K19 -PU"); 3 4 EntityManager manager = factory.createentitymanager ();

Persistindo Para armazenar as informações de um objeto no banco de dados, devemos utilizar o método persist() do EntityManager. 1 Editora novaeditora = new Editora (); 2 novaeditora.setnome (" K19 - Livros ") 4 3 novaeditora.setemail (" contato@k19.com.br"); 5 manager.persist ( novaeditora );

Buscando Para obter um objeto que contenha informações do banco de dados, podemos utilizar os métodos find() ou getreference() do EntityManager. 1 Editora editora1 = manager.find ( Editora.class, 1L); 2 Editora editora2 = manager.getreference ( Editora.class, 2L); Há uma diferença entre esses métodos de busca. O método find() recupera os dados desejados imediatamente. Já o método getreference() posterga essa tarefa até a primeira chamada de um método get no objeto desejado.

Removendo Para remover um registro correspondente a um objeto, podemos utilizar o método remove() do EntityManager. 1 Editora editora = manager.find ( Editora.class, 1L); 2 manager.remove ( editora );

Atualizando Para alterar os dados de um registro correspondente a um objeto, podemos utilizar os próprios métodos setters desse objeto. 1 Editora editora = manager.find ( Editora.class, 1L); 2 editora.setnome (" K19 - Livros e Publicações ");

Listando Para obter uma listagem com todos os objetos referentes aos registros de uma tabela, podemos utilizar a linguagem de consulta do JPA, a JPQL. Essa linguagem é muito parecida com a linguagem SQL. A vantagem da JPQL em relação à linguagem SQL é que a sintaxe é a mesma para bancos de dados diferentes.

Listando 1 Query query = manager.createquery (" SELECT e FROM Editora e"); 2 List <Editora> editoras = query.getresultlist();

Transações As modificações realizadas nos objetos administrados por um EntityManager são mantidas em memória. Em certos momentos, é necessário sincronizar os dados da memória com os dados do banco de dados. Essa sincronização deve ser realizada através de uma transação JPA criada pelo EntityManager que administra os objetos que desejamos sincronizar.

Transações Para abrir uma transação utilizamos o método begin(). 1 manager.gettransaction().begin(); Coma transação aberta, podemos sincronizar os dados como banco através dos métodos flush() (parcialmente) ou commit() (definitivamente). 1 Editora editora = manager.find ( Editora.class, 1L); 2 editora.setnome(" K19 - Livros e Publicações "); 3 4 manager.gettransaction().begin (); 5 manager.flush ();

Transações Outro exemplo 1 Editora editora = manager.find(editora.class, 1L); 2 editora.setnome(" K19 - Livros e Publicações "); 3 4 manager.gettransaction().begin (); 5 manager.gettransaction().commit ();