Mapeamento I: JPA P RO F. M A RC E LO RO B E RTO ZO R ZA N D I S C I P L IN A: P ROJ ETO D E S I ST E M AS – P RSA 4 AU L A 0 7 Na aula de hoje! Mapeamento JPA... ◦ O que é JPA? ◦ Mapeamento Objeto-Relacional ◦ Principais Funcionalidades do JPA ◦ Passo a passo para utilização em projetos ◦ Mapeamentos de entidades, chaves primárias, colunas, relacionamentos. JPA: Java Persistence API Especificação padrão para mapeamento objeto-relacional e gerenciamento de persistência da plataforma Java EE 5.0 Versão 1.0, faz parte da especificação JSR-220 (EJB 3.0) Possui amplo suporte pela maioria dos grandes players do mercado: Apache, Oracle, BEA, JBoss Mapeamento Objeto-Relacional (ORM) Modelo OO vs Modelo Relacional ◦ ◦ ◦ ◦ Classe = Tabela Objeto = Linha Atributo = Coluna Associação = Chave Estrangeira Mapeamento via XML ou Annotations Objetos Java ORM - Conversão JDBC -Statements - Result Sets Banco de Dados Funcionalidades da JPA Padroniza Mapeamento Objeto-Relacional Utiliza POJO’s ao invés de Entity Beans ◦ POJO(Plain Old Java Object ): “Os Singelos Clássicos Objetos Java” são objetos Java que seguem um desenho simplificado. Pode ser usado com Java SE e Java EE Suporta utilização de diferentes Providers Possui uma linguagem de consulta estendida Suporta herança, polimorfismo Provedor JPA: Vários frameworks disponíveis! Passo a passo para utilização Definir qual JPA Provider será utilizado: ◦ ◦ ◦ ◦ Hibernate: http://jpa.hibernate.org Toplink Essentials: http://oss.oracle.com/toplink-essentials-jpa.html Open JPA: http://openjpa.apache.org No NetBeans, utilizaremos o EclipseLink; Definir o Banco de Dados a ser utilizado e importar o seu Driver JDBC: ◦ MySQL Community Server: https://dev.mysql.com/downloads/mysql/ ◦ MySQL Connector/J 5.1: http://dev.mysql.com/downloads/connector/j/ ◦ No NetBeans, importaremos a biblioteca .jar MySQL; Realizar o Mapeamento Objeto-Relacional ◦ Classes do pacote model Configurar o arquivo persistence.xml Implementar acesso a dados via EntityManager Modelo Relacional Exemplo: Agenda Telefônica Mapeamento Objeto Relacional Entidades @Entity ◦ Especifica que uma classe é uma entidade; ◦ Uma entidade é um objeto que pode ser persistido; ◦ Representa uma tabela no banco de dados relacional. @Table ◦ Especifica nome da tabela no banco de dados. Atributos @Column ◦ Mapeia um atributo ou uma propriedade (getter) a um campo do banco de dados ◦ Possui diversas opções de validação ◦ Lança javax.persistence.PersistenceException Chave Primária Simples @Id ◦ ◦ ◦ ◦ Cada entidade precisa possuir uma chave primária Mapeia uma chave primária simples Chave pode ser gerada automaticamente: IDENTITY, AUTO, SEQUENCE, TABLE Unidade de Persistência (PU) Unidade de Persistência – arquivo .xml Persistindo um objeto… O EntityManagerFactory e EntityManager… A “fábrica” EntityManagerFactory utiliza a Unidade de Persistência criada no persistence.xml: EntityManager: Utilizado para gerenciar as Entidades ◦ Criando um EntityManager a partir da “fábrica”: Java Swing com JPA no NetBeans Algumas facilidades… ◦ Componentes: ◦ Gerenciador de Entidade: EntityManager ◦ Consulta: Query ◦ Resultado da Consulta: List. ◦ Vinculação de elementos Exercícios Próxima aula… Mapeamento (continuação)