Mapeamento Lógico/Relacional com JPA



Documentos relacionados
JPA Java Persistence API. Prof. Ramon Chiara

JPA: Persistência padronizada em Java


UFG - Instituto de Informática

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

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

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

Java Persistence API (JPA)

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

Persistência de Dados em Java com JPA e Toplink

Persistindo dados com TopLink no NetBeans

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

Tecnologias Java JDBC. Marcio Seiji Oyamada

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

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

Desmistificando o Hibernate Envers em 10 passos

HIBERNATE Criando um projeto em Java + Hibernate do zero

Aula 4. Carlos Eduardo de Carvalho Dantas

Introdução à JPA-Java Persistence API

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

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

JPA (Java Persistence API) Marcos Kalinowski

Java Persistence Query Language JPQL

Banco de Dados. Sérgio Luiz Ruivace Cerqueira

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

Auditando persistência com JPA

Padrão J2EE Data Access Object (DAO)

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

UFG - Instituto de Informática

JDBC. Java DataBase Connectivity

Resolvendo objeto-relacional impedance mismatch com hibernate

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

UFG - Instituto de Informática

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

ARQUITETURA SISGRAD. Manual de Utilização. Versão: 2.0. Criação: 05 de julho de 2007 Autor: André Penteado

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

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

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

Banco de Dados. Banco de Dados. Alcides Pamplona Alcides Pamplona Linguagem de Programação CESBD 2010

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

Persistência com JPA2 e Hibernate TREINAMENTOS

Padrões de Projeto e Persistência com DAO

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

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

Java e Banco de Dados: JDBC, Hibernate e JPA

JDBC. Prof. Márcio Bueno

Hibernate na sua aplicação JavaWeb

UFG - Instituto de Informática

JPA e Hibernate por Thiago Faria e Normandes Junior

Universidade Estadual de Maringá Centro de Tecnologia Departamento de Informática Especialização em Desenvolvimento de Sistemas para Web

JDBC (Java Database Connectivity) Padrão de Projeto DAO (Data Access Object) Roteiro para instalação do banco de dados e do driver JDBC

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

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

Programação Orientada a Objetos JDBC Java Database Connectivity

Hibernate Envers Easy Entity Auditing

Leonardo Gresta Paulino Murta

RELACIONAMENTOS ENTRE OS OBJETOS NO FRAMEWORK HIBERNATE Elio Lovisi Filho 1 Ronney Moreira de Castro 2 RESUMO

Acesso a Banco. Conexão em Java. Conexão em Java. Programação Orientada a Objetos Profa. Cristiane e Prof. Daniel

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

Integrando Java com Banco de Dados

Enterprise Java Beans (IV)

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

Persistência em Software Orientado a Objetos:

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

Fernando Kasten Peinado

Persistência de Classes em Tabelas de Banco de Dados

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

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

Módulo 5 - JDBC java.sql - Conexão com Banco de Dados

Classes de Entidades Persistentes JDB

HIBERNATE EM APLICAÇÃO JAVA WEB

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

UNIVERSIDADE FEDERAL DA BAHIA INSTITUTO DE MATEMÁTICA CIÊNCIA DA COMPUTAÇÃO LINGUAGENS PARA APLICAÇÃO COMERCIAL. Java Peristence API 1.

Evento.java. package dominio;

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

JPA Mini Livro Primeiros passos e conceitos detalhados

Acesso a banco de dados

PROJETO INTEGRADOR. Documentação. Aplicação de Controle de Acesso FACULDADE DE TECNOLOGIA SENAC GOIÁS. Programação com Frameworks

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

Mapeamento Objeto-Relacional

Uma Abordagem sobre Mapeamento Objeto Relacional com Hibernate

De forma simples, para a execução de comandos SQL com JDBC, precisa-se da instancia de três classes Java. São elas: Nome da classe Função

Migrations for Java EVOLUINDO SEU BANCO DE MANEIRA INCREMENTAL

Programação WEB (JSP + Banco Dados) Eng. Computação Prof. Rodrigo Rocha

Programação com Acesso a Banco de Dados

Figura 1.1 Código de inserção não baseado em Hibernate. Figura 1.2 Código de inserção baseado em Hibernate

WebApps em Java com uso de Frameworks

Novatec Editora Ltda. [2014].

J550 Integração com Bancos de Dados

Persistência de Objetos no SGBD PostgreSQL, Utilizando as APIs: JDBC, JDK, Swing e Design Patteners DAO.

SISTEMA PARA COMPOSIÇÃO E CORREÇÃO DE LISTAS DE QUESTÕES DE MÚLTIPLA ESCOLHA

Artigo JavaMagazine (edição 58)

JPA 2.0 e Servlet 3.0

Transcrição:

Mapeamento Lógico/Relacional com JPA Elaine Quintino da Silva Doutora em Ciência da Computação pelo ICMC-USP/São Carlos Analista de Sistemas UOL PagSeguro Instrutora Globalcode

Agenda! Persistência de dados! JPA! Como usar JPA! Relacionamentos! Conclusões

Agenda! Persistência de dados! JPA! Como usar JPA! Relacionamentos! Conclusões

Persistência de dados Tabelas Colunas Registros Chaves Arquivos Bancos de dados Hierárquicos Bancos de dados Relacionais Bancos de dados Orientados a Objetos Modelos mais recentes (NoSQL)... Ex.: SQL Server, Oracle, MySQL, Postgresql,...

Persistência de dados Programação Orientada a Objetos Banco de dados relacional JDBC

Persistência de dados Programação Orientada a Objetos Banco de dados relacional public void save(produto produto){ String sql = "INSERT INTO produtos (nome,preco) VALUES (' + produto.getnome() JDBC + "', " + produto.getpreco() + ")"; Connection conn = null; Statement stmt = null; try { Class.forName("org.gjt.mm.mysql.Driver"); conn = DriverManager.getConnection("jdbc:mysql://host/bd", us", ps"); stmt = conn.createstatement(); stmt.executeupdate(sql); } catch (ClassNotFoundException e) { //... } catch (SQLException e) { //... }finally {//...}

Persistência de dados Programação Orientada a Objetos Banco de dados relacional JDBC Soluções de ORM (Object Relational Mapping): Hibernate, KODO, JDO, TopLink, EJB EntityBean... JPA

Agenda! Persistência de dados! JPA! Como usar JPA! Relacionamentos! Conclusões

JPA Java Persistence API! API para abstração da camada de persistência das aplicações orientadas a objetos! v1.0 2006 / v2.0 2009! Integração com diversos frameworks (não pode ser usado isoladamente)! Mapeamento objeto / relacional! Classe para tabela! Atributo para coluna! Relacionamento para chave estrangeira! API para salvar, atualizar, excluir os objetos do banco

JPA Java Persistence API! JPA depende de JDBC e de um framework de persistência

Agenda! Persistência de dados! JPA! Como usar JPA! Relacionamentos! Conclusões

Como usar JPA! Configurar bibliotecas no projeto! JPA + Framework + Driver SQL! Mapear as classes para as devidas tabelas/colunas e os relacionamentos para as chaves estrangeiras! Anotações Java! Configurar uma unidade de persistência! persistence.xml! Usar as classes da API JPA para gerenciar os objetos no banco de dados

Como usar JPA (1º)! Configurando as bibliotecas: <dependency> <groupid>org.hibernate.javax.persistence</groupid> <artifactid>hibernate-jpa-2.0-api</artifactid> <version>1.0.1.final</version> <scope>compile</scope> </dependency> <dependency> <groupid>org.hibernate</groupid> <artifactid>hibernate-entitymanager</artifactid> <version>4.0.0.final</version> <scope>compile</scope> </dependency> <dependency> <groupid>mysql</groupid> <artifactid>mysql-connector-java</artifactid> <version>5.1.21</version> <scope>compile</scope> </dependency>

Como usar JPA (2º)! Mapeando a entidade de persistência @Entity @Table(name = "produtos") public class Produto implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) protected Integer id; @Column(name= nome_produto ) protected String nome; protected double preco; protected String marca; public Produto() {}

Como usar JPA (2º)! Anotações para mapeamento de tabelas e colunas: @Entity @Table (name= ) @Column(name= ) @Id @GeneratedValue(strategy=GenerationType.X)! X à IDENTITY, SEQUENCE, TABLE, AUTO @Temporal(TemporalType.X)! X à TIMESTAMP, TIME, DATE @Transient

Como usar JPA (3º)! Configurando a unidade de persistência! Persistence Unit! Qual é o banco de dados?! Quais são as classes persistentes?! Como as transações são gerenciadas?, etc! Configurada no arquivo persistence.xml! Deve estar no diretório META-INF na raiz da estrutura de pacotes das classes persistentes.

Como usar JPA <?xml version="1.0" encoding="utf-8"?> <persistence version="2.0"..."> <persistence-unit name="jpa20" transaction-type="resource_local"> <class>br.com.exemplo1.jpa.produto</class> <properties> <property name="javax.persistence.jdbc.url" value="jdbc:mysql://host/db"/> <property name="javax.persistence.jdbc.user" value= user"/> <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.driver"/> <property name="javax.persistence.jdbc.password" value= senha"/> <property name="hibernate.hbm2ddl.auto" value="create"/> <property name="hibernate.show_sql" value="true"/> <property name="hibernate.format-sql" value="true"/> </properties> </persistence-unit> </persistence>

Como usar JPA (4º)! EntityManager (javax.persistence)! Métodos para gerenciar os objetos no banco de dados (B) find / query (C) persist (D) clear (E) merge (F) remove

Como usar JPA (4º)! EntityManagerFactory (javax.persistence)! Fábrica de EntityManagers! Apenas uma instância por aplicação! alto custo de inicialização! Técnicas de inicialização serão vistas mais a diante! Definida em uma unidade de persistência

Como usar JPA (4º) Import javax.persistence.*; public class App { public static void main(string[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("JPA20"); EntityManager em = emf.createentitymanager(); } } Produto p1 = new Produto("LG", "TV 5\'", 2000.0); em.gettransaction().begin(); em.persist(p1); em.gettransaction().commit(); em.close(); emf.close();

Agenda! Persistência de dados! JPA! Como usar JPA! Relacionamentos! Conclusões

Relacionamentos! JPA permite mapear os relacionamentos entre as classes para tabelas! Associações! @OneToOne, @OneToMany, @ManyToOne! Herança! @Inheritance! Estratégias:! Única tabela! Tabela por subclasse! Tabela por classe concreta

Relacionamentos! OneToOne! Diagrama de classes:! Tabelas: pessoas pk id_pessoa fk id_endereco... enderecos pk id_endereco...

Relacionamentos @Entity @Table(name= pessoas ) class Pessoa implements Serializable{ @OneToOne (cascade=cascadetype.all) @JoinColumn(name= id_endereco ) private Endereco end; } @Entity @Table(name= enderecos ) class Endereco implements Serializable { @OneToOne (mappedby= end ) private Pessoa pessoa; }

Relacionamentos! ManyToOne e OneToMany! Diagrama de classes:! Tabelas: pessoas pk id_pessoa fk id_dpto... departamentos pk id_dpto...

Relacionamentos @Entity @Table(name= pessoas ) class Pessoa implements Serializable{ @ManyToOne @JoinColumn(name= id_departamento ) private Departamento depto; } @Entity @Table(name= departamentos ) class Departamento implements Serializable { @OneToMany (mappedby= depto, targetentity=pessoa.class, cascade=cascadetype.all) private Collection pessoas; }

Agenda! Persistência de dados! JPA! Como usar JPA! Relacionamentos! Conclusões

Conclusões! Solução padrão amplamente utilizada! Versão 2.0 bastante robusta com grande parte dos recursos oferecidos pelos frameworks mais comuns! Redução do GAP entre OO e BD relacional! Transparência do mecanismo de persistência que está sendo utilizado JPA RDBMS

Dúvidas? elaineqsilva@gmail.com