UFG - Instituto de Informática



Documentos relacionados
HIBERNATE EM APLICAÇÃO JAVA WEB

UFG - Instituto de Informática

UFG - Instituto de Informática

JPA: Persistência padronizada em Java

Uma Abordagem sobre Mapeamento Objeto Relacional com Hibernate

SISTEMA DE AGENDAMENTO E GERENCIAMENTO DE CONSULTAS CLÍNICAS

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

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

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

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

MAPEAMENTO OBJETO RELACIONAL: UM ESTUDO DE CASO

UFG - Instituto de Informática

Prevayler. Perola. André Luís Sales de Moraes Juliana Keiko Yamaguchi Tatiana Yuka Takaki

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

Unidade 8: Padrão MVC e DAO Prof. Daniel Caetano

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

Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva

EJB ainda tem vez no Java EE 6? Fernando Lozano Consultor 4Linux

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Persistência de Dados em Java com JPA e Toplink

Para construção dos modelos físicos, será estudado o modelo Relacional como originalmente proposto por Codd.

Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V

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

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

Fundamentos da Plataforma Java EE. Prof. Fellipe Aleixo

CURSO DESENVOLVEDOR JAVA Edição Intensiva de Férias

LINGUAGEM DE BANCO DE DADOS


EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

PROGRAMAÇÃO SERVIDOR PADRÕES MVC E DAO EM SISTEMAS WEB. Prof. Dr. Daniel Caetano

Integração de sistemas utilizando Web Services do tipo REST

SISTEMA DE WORKFLOW PARA MODELAGEM E EXECUÇÃO DE PROCESSOS DE SOFTWARE. Aluno: Roberto Reinert Orientador: Everaldo A. Grahl

Java e Banco de Dados: JDBC, Hibernate e JPA

Persistência em Software Orientado a Objetos:

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

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

MAGREGISTER 1.0: GERADOR DE INTERFACES DE COLETAS DE DADOS PARA PDA S. Acadêmico: Gilson Chequeto Orientador: Adilson Vahldick

Documento de Projeto de Sistema

Programação com acesso a BD. Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br

3 SCS: Sistema de Componentes de Software

Sistemas Distribuídos Arquitetura de Sistemas Distribuídos I. Prof. MSc. Hugo Souza

Persistência e Banco de Dados em Jogos Digitais

WebApps em Java com uso de Frameworks

Ferramenta de apoio a gerência de configuração de software. Aluno: Rodrigo Furlaneto Orientador: Everaldo Artur Grahl

Apesar de existirem diversas implementações de MVC, em linhas gerais, o fluxo funciona geralmente da seguinte forma:

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

APLICATIVO WEB PARA O SETOR DE EXTENSÃO IFC VIDEIRA

04/08/2012 MODELAGEM DE DADOS. PROF. RAFAEL DIAS RIBEIRO, MODELAGEM DE DADOS. Aula 1. Prof. Rafael Dias Ribeiro. M.Sc.

Modelo Cascata ou Clássico

Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate

ANEXO 11. Framework é um conjunto de classes que colaboram para realizar uma responsabilidade para um domínio de um subsistema da aplicação.

ENTERPRISE JAVABEANS 3. Msc. Daniele Carvalho Oliveira

CURSO DESENVOLVEDOR JAVA WEB E FLEX Setembro de 2010 à Janeiro de 2011

ESTUDO DE CASO WINDOWS VISTA

Arquitetura de Banco de Dados

DESENVOLVIMENTO WEB DENTRO DOS PARADIGMAS DO HTML5 E CSS3

Linguagem de Programação JAVA. Professora Michelle Nery Nomeclaturas

Introdução à Linguagem Java

Sistemas Distribuídos

Aplicação Prática de Lua para Web

Java para Desenvolvimento Web

gerenciamento de portais e websites corporativos interface simples e amigável, ágil e funcional não dependendo mais de um profissional especializado

MUDANÇAS NA ISO 9001: A VERSÃO 2015

Aplicativo web para definição do modelo lógico no projeto de banco de dados relacional

Banco de Dados. Introdução. João Eduardo Ferreira Osvaldo Kotaro Takai. DCC-IME-USP

IMPLEMENTAÇÃO DE SOCKETS E THREADS NO DESENVOLVIMENTO DE SISTEMAS CLIENTE / SERVIDOR: UM ESTUDO EM VB.NET

Banco de Dados de Músicas. Andre Lima Rocha Campos Osório Pereira Carvalho

Dado: Fatos conhecidos que podem ser registrados e têm um significado implícito. Banco de Dados:

Roteiro 2 Conceitos Gerais

SQL. Curso Prático. Celso Henrique Poderoso de Oliveira. Novatec

Sistemas Operacionais

Adriano Reine Bueno Rafael Barros Silva

SISTEMA GERENCIADOR DE BANCO DE DADOS

Desenvolvimento de um Simulador de Gerenciamento de Memória

Notas da Aula 17 - Fundamentos de Sistemas Operacionais

Introdução a Banco de Dados Aula 03. Prof. Silvestri

Argo Navis J931 - Padrões de Design J2EE. Introdução. Objetivos de aprender padrões J2EE. Conhecer padrões para uso na plataforma J2EE

DATA WAREHOUSE. Introdução

Notas da Aula 15 - Fundamentos de Sistemas Operacionais

5 Framework para coordenação e mediação de Web Services para ambientes de aprendizado à distância

Análise e Projeto de Sistemas de Informação. Andrêza Leite andreza.lba@gmail.com

Sistema de Arquivos. Ambientes Operacionais. Prof. Simão Sirineo Toscani

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse

4 Plano de Recuperação

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0

Sistemas Operacionais

Informática, Internet e multimídia

CURSO DESENVOLVEDOR JAVA Edição 2010

Orientação a Objetos

NOME SEXO CPF NASCIMENTO SALARIO

Programação para Dispositivos Móveis

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE

Faculdade Integrada do Ceará FIC Graduação em Redes de Computadores

UML Aspectos de projetos em Diagramas de classes

UTILIZAÇÃO DA TECNOLOGIA ENTERPRISE JAVABEANS NO DESENVOLVIMENTO DE APLICAÇÕES DISTRÍBUIDAS

Universidade Federal de Goiás UFG Campus Catalão CAC Departamento de Engenharia de Produção. Sistemas ERP. PCP 3 - Professor Muris Lage Junior

Transcrição:

UFG - Instituto de Informática Especialização em Desenvolvimento de Aplicações Web com Interfaces Ricas EJB 3.0 Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 10 Persistência de Dados

Persistência de Dados A persistência de dados, na computação, refere-se ao armazenamento não-volátil de dados, por exemplo, o armazenamento em um dispositivo físico como um disco rígido. Quando se grava um arquivo no disco, por exemplo, o dado está sendo eternizado, ou seja, deixa de ficar volátil na memória RAM e passa a ser escrito num dispositivo que armazena a informação de modo que ela não desapareça facilmente.

Persistência de Dados Pode-se dizer que de maneira geral, o termo persistência é associado a uma ação que consiste em manter em meio físico recuperável, como banco de dados ou arquivo, de modo a garantir a permanência das informações de um determinado estado de um objeto lógico.

Tipos de Persistência Arquivo Banco de Dados

Persistência de Dados Na orientação a objetos, chama-se de objetos persistentes aqueles que permanecem existindo mesmo após o término da execução do programa. Associados à persistência estão o gerenciamento dinâmico da memória e o armazenamento de objetos em bases de dados.

Persistência de Dados Somente é possível eternizar um objeto quando este não possui dados dinâmicos (runtime), ou seja, dados que só fazem sentido no contexto do tempo em que estão executando, como sockets, por exemplo. Os objetos que possuem dados de tempo de execução, se congelados, após sua recuperação os dados que não fazem mais sentido no contexto do novo tempo são ignorados ou perdidos.

Persistência e mapeamento O/R Como sabemos, a tecnologia de banco de dados relacionais existe há décadas, e hoje os SGBDs são robustos e confiáveis. Os principais problemas relacionados ao armazenamento e recuperação de dados já foram solucionados, e o investimento das empresas nesses sistemas também é imenso, o que torna a sua utilização uma regra.

Persistência e mapeamento O/R O uso dos bancos de dados relacionais, no entanto, traz alguns inconvenientes ao desenvolvedor em linguagens orientadas a objetos como Java. As tecnologias OO e relacional são bastante diferentes, e seu uso conjunto normalmente implica em enfatizar uma tecnologia em sacrifício da outra.

Persistência e mapeamento O/R Como os bancos de dados OO ainda estão muito menos disseminados que os bancos de dados relacionais, o desafio atual dos desenvolvedores é unir dois mundos completamente distintos, utilizando a tecnologia relacional para armazenar objetos.

Persistência e mapeamento O/R O armazenamento de objetos de uma aplicação é denominado persistência de objetos. Essa técnica permite que as instâncias existentes no sistema sejam armazenadas e posteriormente recuperadas, conservando-se o seu estado mesmo após a aplicação ter sido finalizada.

Abordagens atuais de mapeamento Desde as suas primeiras versões, a plataforma Java oferece acesso a bancos de dados através da API JDBC, que trabalha no mesmo nível do banco, sendo o acesso às informações armazenadas feito através de comandos SQL.

Abordagens atuais de mapeamento Em muitos aspectos, a JDBC é uma API de baixo nível, que muitas vezes exige do desenvolvedor o conhecimento das nuances do banco de dados. Apesar de ser uma maneira eficiente de acessar dados em SGBDs relacionais, e a opção que normalmente oferece melhor performance, a JDBC oferece uma abstração OO bastante limitada Trabalha-se com Tabelas, Registros e ResultSets, ao invés de Objetos).

Abordagens atuais de mapeamento Para usar os recursos de bancos de dados relacionais em Java e ainda assim aproveitar os conceitos do paradigma OO, é necessário fazer o que se conhece como mapeamento Objeto-Relacional (ou simplesmente mapeamento O/R). No mapeamento O/R as classes e os atributos do sistema são mapeados para tabelas e campos/colunas, e a persistência é feita de forma transparente pela aplicação.

Abordagens atuais de mapeamento Assim, objetos em memória são armazenados no banco, e objetos do banco são trazidos para a memória sempre que necessário. Com paradigmas tão diferentes, essas questões surgem durante o mapeamento: Como mapear herança? E agregação? Cada classe deve virar uma tabela? Como aproveitar os recursos do banco sem perder a abstração de objetos?

Abordagens atuais de mapeamento Para suprir essas necessidades, surgiram ersos frameworks e tecnologias de persistência, a exemplo do Hibernate e do ibatis. Essas ferramentas facilitam o trabalho do desenvolvedor e aumentam sua produtividade, fornecendo poderosas APIs de manipulação de dados. Apesar de cada ferramenta possuir uma forma distinta de efetuar o mapeamento O/R, os conceitos são semelhantes e relativamente simples, baseando-se em POJOs (Plain Old Java Objects).

Abordagens atuais de mapeamento O termo Plain Java Old Object (ou simplesmente, POJO) foi criado por Martin Fowler, Rebecca Parsons e Josh MacKenzie em 2000. A tradução é semelhante a velho e bom objeto Java e refere-se a objetos/classes Java simples, não atrelados a ferramentas ou frameworks

JPA Java Persistence API Até o J2EE 1.4 a plataforma Java não possuía uma forma simples de mapear objetos no banco de dados. A única opção era a utilização de Entity Beans, que exigem um container EJB e possuem uma complexidade razoável. Aplicações cuja arquitetura não envolvia EJBs precisavam utilizar ferramentas não padronizadas como o Hibernate para fazer a persistência, ou fazer a implementação de persistência manualmente.

JPA Java Persistence API A Java Persistence API, definida na JSR-220 (Enterprise JavaBeans,Version 3.0), padroniza o mapeamento objeto-relacional na plataforma Java. Apesar de descrita na especificação do novo EJB, a JPA não depende de um container para funcionar, sendo possível usar e testar soluções apenas com o Java SE.

JPA Java Persistence API A JPA é uma especificação baseada no conceito de POJOs, que incorpora idéias de renomados frameworks de persistência para padronizar o mapeamento O/R em Java. A API oferece uma solução completa para mapeamento e persistência de objetos: Um modo declarativo de descrever mapeamentos O/R Uma linguagem de consulta Um conjunto de ferramentas para manipular entidades

JPA Java Persistence API Em se tratando de um padrão do Java Community Process, a JPA traz ersos benefícios. O uso de um padrão para a persistência de objetos permite que ersos fabricantes trabalhem sobre os mesmos conceitos e que o desenvolvedor escolha a implementação de sua preferência.

JPA Java Persistence API A padronização também traz outra importante vantagem: pode-se alternar entre implementações de fabricantes distintos, que estejam em conformidade com a JSR-220, sem nenhum esforço adicional. Dessa forma, uma aplicação codificada de acordo com o novo padrão irá funcionar com qualquer implementação da JPA, não havendo necessidade de se conhecer (a princípio) qual tecnologia será utilizada para essa implementação.

Conceitos Básicos Na JPA os objetos persistentes são denominados entidades (entities). Uma entidade é um objeto simples (POJO), que representa um conjunto de dados persistido no banco. Como entidades são definidas por classes Java comuns, sem relação com frameworks ou bibliotecas, elas podem ser abstratas ou herdar de outras classes, sem restrições.

Conceitos Básicos Um conceito importante é que as entidades possuem um identificador (descrito pela chave primária) e estado, sendo seu tempo de vida independente do tempo de vida da aplicação. Assim, aplicações distintas podem compartilhar a mesma entidade, que é referenciada através de seu identificador.

Conceitos Básicos Para que uma entidade se torne persistente é necessário associá-la a um persistence context ( contexto de persistência ), que fornece a conexão entre as instâncias e o banco de dados. A manipulação das entidades é feita, a partir desse contexto, por meio do entity manager ( gerenciador ), que é responsável por executar as operações básicas sobre a entidade (criação, atualização, exclusão, localização, consultas etc.). O entity manager na JPA é uma instância da interface javax.persistence.entitymanager.

Conceitos Básicos A implementação da JPA é feita por um persistence provider ( provedor ). O provedor define como as coisas funcionam, através da implementação de todas as interfaces definidas pela especificação da JPA. Dessa forma, cada provedor decide a maneira e o momento de carregar, atualizar e armazenar as entidades, assim como sincronizar os dados com o banco.

Conceitos Básicos As configurações utilizadas pelo provedor em uma determinada aplicação (conexão com o banco de dados, entidades que serão gerenciadas, tipo de transação etc.) são descritas em uma persistence unit, que é configurada num arquivo especial denominado persistence.xml.

Mapeamento As classes e interfaces da JPA estão localizadas no pacote javax.persistence. A API faz uso intensivo de anotações; por isso não é necessário criar descritores XML para cada uma das entidades da aplicação. Uma entidade é uma classe Java comum, rotulada através da anotação @Entity.

Mapeamento Não é necessário implementar interfaces ou estender outras classes para tornar uma classe persistível ; A única exigência é que a classe da entidade possua um construtor sem parâmetros, pois a instanciação da classe é feita por reflexão.

Mapeamento As classes e interfaces da JPA estão localizadas no pacote javax.persistence. A API faz uso intensivo de anotações por isso não é necessário criar descritores XML para cada uma das entidades da aplicação.

Mapeamento Uma entidade é uma classe Java comum, rotulada através da anotação @Entity. Não é necessário implementar interfaces ou estender outras classes para tornar uma classe persistível a única exigência é que a classe da entidade possua um construtor sem parâmetros, pois a instanciação da classe é feita por reflexão.