Padrão J2EE Data Access Object (DAO)



Documentos relacionados
Java Persistence Query Language JPQL

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


Introdução. Servlet. Ciclo Vida. Servlet. Exemplos. Prof. Enzo Seraphim

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

Criar uma aplicação JPA2 com EclipseLink e H2

Mapeamento Lógico/Relacional com JPA

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

4 - Padrões da Camada de Integração. Introdução

UFG - Instituto de Informática

Evento.java. package dominio;

Resolvendo objeto-relacional impedance mismatch com hibernate

JPA Java Persistence API. Prof. Ramon Chiara

Hibernate. Mapeamento O/R Marcio Aguiar Ribeiro

UFG - Instituto de Informática

Persistindo dados com TopLink no NetBeans

Introdução à JPA-Java Persistence API

Persistência de Dados em Java com JPA e Toplink

Hibernate Envers Easy Entity Auditing

HIBERNATE EM APLICAÇÃO JAVA WEB

Módulo 5 JPATransaction Camadas Turma Turma TurmaBC TurmaBC TurmaBC TurmaBC

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

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

Capítulo 04: Persistência com SQLite

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

JPA: Persistência padronizada em Java

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

Tecnologias Java JDBC. Marcio Seiji Oyamada

Banco de Dados. Maurício Edgar Stivanello

Tecnologias Web. Padrões de Projeto - Camada de Apresentação

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

Fundamentos da Plataforma Java EE. Prof. Fellipe Aleixo

Classes de Entidades Persistentes JDB

Padrões de Projeto e Persistência com DAO

Figura 1. A Classe Java

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

Criando um CRUD RESTful com Jersey, JPA e MySQL

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

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

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

Prof.: Clayton Maciel Costa

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

Padrão Arquitetura em Camadas

Estrutura em Camadas. Estrutura em Camadas. Alcides Pamplona Alcides Pamplona Linguagem de Programação CESBD 2010

DSS 08/09. Camada de Dados - JDBC. Aula 1. António Nestor Ribeiro /António Ramires Fernandes/ José Creissac Campos {anr,arf,jfc}@di.uminho.

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

DSS 09/10. DSS 09/10 Que métodos é que fazem parte de cada camada? Aplicações Multi-camada JDBC. Aula 3 DSS 09/10

08/04/2013. Agenda. O Sistema CACHÉ. O Sistema CACHÉ. O Sistema CACHÉ. O Sistema CACHÉ

Aplicabilidade: visão geral

PHP INTEGRAÇÃO COM MYSQL PARTE 1

Aula 4. Carlos Eduardo de Carvalho Dantas

Resumo: Perguntas a fazer ao elaborar um projeto arquitetural

UFG - Instituto de Informática

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

Banco de Dados. Prof. Antonio

Auditando persistência com JPA

SQL Structured Query Language

Padrões do Catálogo J2EE. Lincoln Souza Rocha, M.Sc.

A & F Consultoria em Sistemas e Treinamentos 2014 af.tecnoserv@gmail.com. A linguagem SQL. Autor: Hélio de Almeida Fonte: Wikipédia

PROGRAMAÇÃO SERVIDOR PADRÕES DAO, VIEW CONTROL E FRONT CONTROL EM SISTEMAS WEB. Prof. Dr. Daniel Caetano

UFG - Instituto de Informática

Construindo Aplicações com ASP.NET MVC 2.0 Aula 03 Luiz Alberto Ferreira Gomes. Ciência da Computação da PUC Minas

JPA (Java Persistence API) Marcos Kalinowski

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

Acesso a Bancos de Dados em Java (JDBC)

HIBERNATE Criando um projeto em Java + Hibernate do zero

Como já foi muito bem detalhado no Capítulo IV, o jcompany Developer Suite pode ser

Hoje é inegável que a sobrevivência das organizações depende de dados precisos e atualizados.

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

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL

Desenvolvendo Aplicações Web com NetBeans

Structured Query Language (SQL)

Conexão com Banco de Dados

Prof. Jhonatan Fernando

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

J550 Padrões de Projeto J2EE para Aplicações Web

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

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

Padrões de Projeto WEB e o MVC

Programação Orientada a Objetos (DPADF 0063)

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

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

Persistência em Software Orientado a Objetos:

BANCO DE DADOS. info 3º ano. Prof. Diemesleno Souza Carvalho

Java Persistence API (JPA)

Curso de Aprendizado Industrial Desenvolvedor WEB

PROJETO PEDAGÓGICO DE CURSOS

LINGUAGEM SQL. DML - Linguagem de Manipulação de Dados

PROJETO DA DISCIPLINA. PES II Processo de Engenharia de Software II

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

Projeto Demoiselle. Para perguntas e respostas, utilizem a lista de discussões de usuários da comunidade: demoiselle-users@lists.sourceforge.

14/08/2008. Curso Superior de Tecnologia em Banco de Dados Disciplina: Projeto de Banco de Dados Relacional 1 Prof.: Fernando Hadad Zaidan

Java e Banco de Dados: JDBC, Hibernate e JPA

Comandos de Manipulação

Transcrição:

Introdução CRUD DAO Exemplo Padrão J2EE Data Access Object (DAO) Prof. Enzo Seraphim

Motivação para usar Componentes precisam acessar e armazenar informações em armazenamento persistente As APIs de armazenamento persistente variam dependendo do fornecedor A portabilidade dos componentes é diretamente afetada quando mecanismos e APIs de acesso específicos são incluídos nos componentes Os componentes precisam ser transparentes ao armazenamento persistente ou à implementação da origem de dados.

Camada de Integração A camada de integração encapsula a lógica relacionada com a integração do sistema com a camada de negócios É acoplada com a camada de negócios sempre que esta camada precisar de dados ou serviços que residem na camada de recursos (dados) Os componentes nesta camada podem usar tecnologias de acesso aos serviços específicos que isolam (JDBC, JMS, middleware proprietário, etc.)

Descrição do Problema Forma de acesso aos dados varia dependendo da fonte de dados usado Banco de dados relacional Arquivos (XML, CSV, texto, formatos proprietários) Persistência de objetos depende de integração com fonte de dados Colocar código de persistência diretamente no código do objeto amarra o código desnecessariamente à forma de implementação

Descrição do Problema Apresentação Negócio Fonte de Dados aplicacao Visao1 Visao2 Visao3 Banco Relacional Visao4 Banco OO modelo Objeto1 Objeto2 Objeto3 Arquivo XML Objeto4

Descrição da Solução Data Access Object (DAO) oferece uma interface comum de acesso a dados e esconde as características de uma implementação específica DAO define uma interface que pode ser implementada para cada nova fonte de dados usada, viabilizando a substituição de uma implementação por outra DAOs não mantêm estado nem cache de dados

Descrição da Solução Apresentação Negócio Integração Fonte de Dados aplicacao Visao bddao ObjetoBDDao Banco Relacional dao ObjetoDao bdoodao ObjetoBDOODao Banco OO modelo Objeto xmldao ObjetoXMLDao Arquivo XML

Introdução CRUD DAO Exemplo Data Access Object (DAO) Prof. Enzo Seraphim

Definição CRUD é acrônimo das operações básicas utilizadas em Banco de Dados : Create Criar ou adicionar novas entradas Retrieve (Read) Ler, recuperar ou ver entradas existentes Update Atualizar ou editar entradas existentes Delete (Destroy) Remover entradas existentes Outros acrônimos ABCD: Add, Browse, Change e Delete BREAD: Browse, Read, Edit, Add e Delete VADE(R): View, Add, Delete, Edit (Restore)

Métodos CRUD void create( ENTIDADE ) Retrieve: ENTIDADE findentidade( ID ) List findallentidade() List findpageentidade(max, first ) int getcountentidade() void update( ENTIDADE ) void delete ( ID )

Matriz de Interações (Matriz CRUD) Retrata as relações entre Funcionalidades (ou atividades) e Entidades (ou tipos de objetos de dados) dentro de um escopo de negócio ou sistema de informação. As células de interseção denotam o tipo de interação CRUD existente que podem ser: Create (inclusão), Retrive (leitura), Update (atualização) e Delete (exclusão). Instrumento útil para identificar agrupamentos que podem ser usados para elaborar: componentes, patterns, módulos ou mesmo aplicações específicas

Pessoa Exemplo de Matriz CRUD Funcionalidade Entidades Cargo Criar Cargo Contratar Pagar Cadastrar Produto Cadastrar Cliente Vender C C U U U U C U U C C U C U U C

Introdução CRUD DAO Exemplo Data Access Object (DAO) Prof. Enzo Seraphim

DAO Data Access Object Objetivo: Abstrair e encapsular todo o acesso a uma fonte de dados. O DAO gerencia a conexão com a fonte de dados para obter e armazenar os dados.

Estratégias de Implementação Estratégia DAO Básica Oferece métodos para criar, apagar, atualizar e pesquisar dados em um banco (CRUD). Estratégia DAO Método de Fábrica Utiliza Factory Methods em uma classe para recuperar todos os DAOs da aplicação Estratégia DAO Fábrica Abstrata Permite criar diversas implementações de fábricas diferentes que criam DAOs para diferentes fontes de dados

Estratégia Básica DAO ObjetoNegocio usa ObjetoDao encapsula FonteDados cria/usa obtém/modifica ObjetoTransferencia ObjetoNegocio representa o cliente de dados. É o objeto que requer acesso à fonte de dados para obter e armazenar dados. ObjetoDao abstrai a implementação de acesso aos dados para a ObjetoNegocio para permitir o acesso transparente à fonte de dados. O ObjetoNegocio também delega operações de leitura e armazenamento o ObjetoDao.

Estratégia Básica DAO ObjetoNegocio usa ObjetoDao encapsula FonteDados cria/usa obtém/modifica ObjetoTransferencia FonteDados representa uma implementação de fonte de dados, tais como SGBD, SGBDOO, etc. ObjetoTransferencia representa um objeto de transferência usado como carregador de dados. O ObjetoDao pode usar um objeto de transferência para retornar dados para o cliente. O ObjetoDao também pode receber os dados do cliente em um objeto de transferência para atualizar os dados no FonteDados

Conseqüências Transparência quanto à fonte de dados Facilita migração para outras implementações Implementar DAO com mesma interface Reduz complexidade do código nos objetos de negócio Centraliza todo acesso aos dados em camada separada que pode ser usada por qualquer componente (servlets, EJBs) Camada adicional Pode ter pequeno impacto na performance

Estratégia DAO Método de Fábrica http://java.sun.com/blueprints/corej2eepatterns/patterns/dataaccessobject.html

Estratégia DAO Fábrica Abstrata http://java.sun.com/blueprints/corej2eepatterns/patterns/dataaccessobject.html

Introdução CRUD DAO Exemplo Data Access Object (DAO) Prof. Enzo Seraphim

Estratégia Básica DAO ObjetoNegocio usa ObjetoDao encapsula FonteDados public class DataSource{ public static EntityManagerFactory emf = Persistence.createEntityManagerFactory( "LocadoraPU"); } public static EntityManager createentitymanager(){ return emf.createentitymanager(); } :EntityManagerFactory :EntityManager persistence. xml createentitymanager()

Estratégia Básica DAO ObjetoNegocio usa ObjetoDao encapsula FonteDados ClienteDao create retrieve update delete LocacaoDao create retrieve update delete FilmeDao create retrieve update delete Cliente -login:string -cpf:string -nome:string Locacao * 1 -id:int -locacao:calendar -devolucao:calendar Filme -codigo:int -nome:string

Exemplo Cliente -login:string -cpf:string -nome:string Locacao * 1 -id:int -locacao:calendar -devolucao:calendar Filme -codigo:int -nome:string package br.edu.unifei.bd.locadora; import javax.persistence.entity; import javax.persistence.generatedvalue; import javax.persistence.id; @Entity public class Filme { @Id @GeneratedValue private int codigo; private String nome; } //... Get s e Set s

Exemplo Cliente -login:string -cpf:string -nome:string Locacao * 1 -id:int -locacao:calendar -devolucao:calendar Filme -codigo:int -nome:string package br.edu.unifei.bd.locadora;... @Entity public class Locacao { @Id @GeneratedValue private int id; @OneToOne private Filme filme; @ManyToOne private Cliente cliente; } private Calendar locacao; private Calendar devolucao; //... Get s e Set s

Exemplo Cliente -login:string -cpf:string -nome:string Locacao * 1 -id:int -locacao:calendar -devolucao:calendar Filme -codigo:int -nome:string package br.edu.unifei.bd.locadora;... @Entity public class Cliente { @Id private String login; private String CPF; private String nome; @OneToMany private List<Locacao> locacoes = new ArrayList<Locacao>(); } //... Get s e Set s

Estratégia Básica DAO ObjetoNegocio usa ObjetoDao encapsula FonteDados ClienteDao create retrieve update delete LocacaoDao create retrieve update delete FilmeDao create retrieve update delete Cliente -login:string -cpf:string -nome:string Locacao * 1 -id:int -locacao:calendar -devolucao:calendar Filme -codigo:int -nome:string

CRUD Create,Update,Delete emf:entitymanagerfactory persistence.xml createentitymanager() createentitymanager em:entitymanager persist() merge() remove() gettransaction :EntityTransaction begin() commit() c1:cliente login="ze" cpf="123456789" nome="jose Silva" l1:locacao * 1 id="1" locacao devolucao f1:filme codigo="1" nome="hp 1"

Estratégia Básica DAO ObjetoNegocio usa ObjetoDao encapsula FonteDados ClienteDao create retrieve update delete LocacaoDao create retrieve update delete FilmeDao create retrieve update delete Cliente -login:string -cpf:string -nome:string Locacao * 1 -id:int -locacao:calendar -devolucao:calendar Filme -codigo:int -nome:string

CRUD Create,Update,Delete public class FilmeDao { private EntityManager em; public FilmeDao(EntityManager em) { this.em = em; } public void create(filme filme) { em.gettransaction().begin(); em.persist(filme); em.gettransaction().commit(); }

CRUD Create,Update,Delete public void update(filme filme) { em.gettransaction().begin(); em.merge(filme); em.gettransaction().commit(); } } public void delete(int codigo) { em.gettransaction().begin(); Filme filme = findfilme(codigo); em.remove(filme); em.gettransaction().commit(); }...

CRUD Retrive emf:entitymanagerfactory persistence.xml createentitymanager() em:entitymanager createquery() :Query getsingleresult() getresultlist() :Iterator<> hasnext() next() :List<> iterator() size()

Estratégia Básica DAO ObjetoNegocio usa ObjetoDao encapsula FonteDados ClienteDao create retrieve update delete LocacaoDao create retrieve update delete FilmeDao create retrieve update delete Cliente -login:string -cpf:string -nome:string Locacao * 1 -id:int -locacao:calendar -devolucao:calendar Filme -codigo:int -nome:string

CRUD Retrive public class Filme{... public Filme findfilme(int codigo) { return (Filme) em.createquery( "from Filme where codigo = " + codigo).getsingleresult(); } public List<Filme> findallfilme() { return em.createquery( "from Filme").getResultList(); }

CRUD Retrive public List<Filme> findpagefilme (int max, int first) { Query query = em.createquery( "from Filme"); query.setmaxresults(max); query.setfirstresult(first); return query.getresultlist(); } } public long getcountfilme() { return (Long) em.createquery( "select count(*) from Filme" ).getsingleresult(); }

Os logotipos, marcas comerciais e nomes de produtos citados nesta publicação tem apenas o propósitos de identificação e podem ser marcas registradas de suas respectivas companhias. Padrão J2EE Data Access Object (DAO) Prof. Enzo Seraphim