Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos

Slides:



Advertisements
Apresentações semelhantes
JBanana.
Advertisements

ABSTRAÇÃO processo de representar um grupo de entidades através de seus atributos comuns feita a abstração, cada entidade particular (instância) do grupo.
Java Conexão com Banco de Dados
Módulo III Arquitetura em Camadas
Hibernate Apresentação
Introdução a JDBC Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.
Java Persistence API (JPA) Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.
B ANCO DE D ADOS E JDBC Profa. Msc. Cintia Carvalho Oliveira Mestre em Ciência da Computação – UFU Bacharel em Ciência da Computação - UFJF 1.
Se liga aí, que é hora da revisão!
Integração com Banco de Dados
Design Patterns / Acesso ao banco de dados (java.sql)
JSP / Servlets Avançado
JAVA - Struts. AULA 3.
Hibernate Java avançado – PCC Jobson Ronan
Hibernate Java avançado – PCC Jobson Ronan
Estudo de Caso: um editor de documentos
Acoplamento e Coesão Modelagem e Programação Orientada a Objetos
Configuração do Ambiente de programação
Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.
Projeto de Sistemas de Informação Prof. Schneider Oracle Object-Relational.
Persistência e mapeamento objeto relacional
Ricardo Ferreira Schiavo
Java Conexão com Baco de dados Saulo Bazzi Oberderfer Fonte:
Feapa Prof Osiel Marlon Disciplina: Engenharia de Software 2009 Curso: Sistemas de Informação.
Leo Silva Leonardo Murta Luiz Viana Persistência em Java.
Aprendendo como funciona o NHibernate Elvis Medeiros Programador .NET
USANDO JAVABEANS EM JSP. Usando JavaBeans em JSP  O uso de JavaBeans em uma página JSP envolve as actions, e.
Acesso a Banco de Dados com JDBC e DAO
Desenvolvimento WEB II Aula 3 – Conexão com o Banco de Dados
PSW1 Prof. Rafael. Persistência Atividade que permite que o estado de um objeto exista mesmo após a extinção do processo computacional que o criou. Em.
Desenvolvimento WEB II Professora: Kelly de Paula Cunha Apresentação baseada no material didático elaborado pelo Prof. Pasteur Ottoni de Miranda Junior.
Desenvolvimento WEB II Professora: Kelly de Paula Cunha.
Java Módulo II Projeto Final.
Análise Orientada a Objetos Wedson Quintanilha da Silva
José Antônio da cunha IFRN Administração de Banco de Dados.
Introdução POO Thiago Medeiros Sistemas de Informação Definição: Sistemas de Informação é uma combinação de pessoas, dados, processos, redes de.
1 Introdução aos Padrões de Projetos (na prática) Créditos: Lúbia Vinhas Hazel Carvalho Crato Adaptações: Prof. Nécio de Lima Veras.
1 Programação de Banco de Dados José Antônio da Cunha George Azevedo da Silva.
Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos
1.  Desenvolvimento de Software Adaptativo Princípios técnicos e práticas OO que são esquecidos  Princípios SOLID Conceitos de orientação a objetos.
Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos
ALUNO: RONI FABIO BANASZEWSKI Model-View-Controller.
GRASP: Projeto de Objetos com Responsabilidade. 2 Pauta Responsabilidades e métodos Responsabilidades e métodos Padrões Padrões GRASP: Padrões e princípios.
Application Server & EJB3 Wesley Gonçalves da Silva
Tecnologias e Linguagens para Banco de Dados I Prof. João Ricardo Andrêo 1/6/ :19 1 Respostas: 1. O que é um Sistema Gerenciador de Banco de Dados.
V Seminário RSJUG Confraria do Java JavaDB Um Banco de Dados 100% Java Profa. Me. Karen Selbach Borges.
Noções de projeto orientado a objetos - camadas Prof. Gustavo Wagner (alterações) Prof. Tiago Massoni (Slides originais) Desenvolvimento de Sistemas FATEC-PB.
Programação para Internet Aula 06 Linguagem Java (Orientação a Objetos – Atributos e Métodos)
1 Interface (o termo) » Interface (a palavra reservada): Java estendeu o conceito de interfaces à um nível ainda mais flexível que permite construir entidades.
Polimorfismo com Interfaces Pacotes em Java Prof. Gustavo Wagner (Alterações) Prof. Tiago Massoni (Slides Originais) Desenvolvimento de Sistemas FATEC-PB.
Introdução a Padrões de Projeto Padrões de Projeto Orientado a Objetos Profa. Danielle Martin Universidade de Mogi das Cruzes.
Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos
Programação para Internet Aula 12 SQL (Comandos de Consulta ao BD)
Persistência de dados e padrão DAO
Normalização (4FN) Na literatura aparecem outras formas normais, como a forma normal de Boyce/Codd, a 4FN e a 5FN. Destas a única que tem importância na.
Application Server & EJB3 Wesley Gonçalves da Silva
Persistência de dados e padrão DAO Padrões de Projeto Orientado a Objetos Profa. Danielle Martin/Mauricio Universidade de Mogi das Cruzes.
AULA Mais Herança Curso: Informática (Subseqüente) Disciplina: Programação Orientada a Objetos Prof. Abrahão Lopes
Padrões de Projeto Aula 14 – Padrão Abstract Factory.
Herança e Polimorfismo Prof. Gustavo Wagner (Alterações) Prof. Tiago Massoni (Slides Originais) Desenvolvimento de Sistemas FATEC-PB  Centro de Informática,
Introdução à Orientação a Objetos em Java Prof. Gustavo Wagner (Alterações) Slides originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB.
Revisão de Conceitos Thiago Medeiros Barros. Algoritmos Qualquer problema de computação pode ser resolvido executando uma série de ações em uma ordem.
Padrões de Projeto Aula 15 – Padrão Command. PADRÃO COMMAND Encapsulando a chamada de métodos com o padrão Command. 2.
Prof. Thales Castro.  Breve revisão  Diagramas de Classe.
Diagramas de Sequência e Comunicação
Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
Aula 5 - Métodos. Desenvolvimento de Programas A melhor forma de construir programas grandes é dividi-los em programas menores que executam tarefas específicas.
Acesso a Banco de dados com JDBC
Transcrição da apresentação:

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Patterns Não existe uma definição exata para o que são patterns. O autor Martin Fowler, define patterns como uma idéia que foi útil em um contexto prático e que provavelmente será útil em outros. Outros autores definem como uma regra que expressa uma relação entre um contexto, um problema e uma solução. Mas em geral, patterns tem sempre as seguintes características: são notados através da experiência; evitam que se reinvente a roda; existem em diferentes níveis de abstração; são artefatos reutilizáveis; passam aos desenvolvedores designs corretos e podem ser combinados para resolver um grande problema; aceitam melhoramentos contínuos.

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Pattern Data Access Object (DAO) 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.

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Pattern Data Access Object (DAO) O padrão Data Access Object, também conhecido como o padrão DAO, abstrai a recuperação dos dados tal como uma base de dados. O conceito é "separar a relação do cliente de um recurso dos dados de seu mecanismo de acesso dos dados.“ O DAO é utilizado para encaplusar a lógica de acesso a dados. Assim, se for necessário a alteração de banco de dados, não é necessário alterar todo sistema, mas somente os DAOs.

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Pattern Data Access Object (DAO) Dentro do DAO são realizadas as querys ou o acesso aos métodos do Hibernate ou direto a Base de Dados. A intenção real de existência dos DAOs é que eles não possuam nenhuma lógica de negócio, apesar de algumas vezes ser necessário encaplusar algo dentro deles, especialmente quando outros patterns da camada de modelo não estão presentes. Quando utilizado junto com Hibernate, ambos realizam o trabalho de abstrair a base, pois o Hibernate já mascara o tipo do banco de dados, ficando para o DAO a parte de controlar as conexões, excessões, retornos para os níveis superiores, entre outros.

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Problema (DAO) Forma de acesso aos dados varia consideravelmente dependendo da fonte de dados usado Banco de dados relacional Arquivos (XML, CSV, texto, formatos proprietários) LDAP Persistência de objetos depende de integração com fonte de dados (ex: business objects) Colocar código de persistência (ex: JDBC) diretamente no código do objeto que o utiliza ou do cliente amarra o código desnecessariamente à forma de implementação Ex: difícil passar a persistir objetos em XML, LDAP, etc.

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Solução (DAO) Data Access Object (DAO) oferece uma interface comum de acesso a dados e esconde as características de uma implementação específica Uma API: métodos genéricos para ler e gravar informação Métodos genéricos para concentrar operações mais comuns (simplificar a interface de acesso) 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

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos UML (DAO) Client: objeto que requer acesso a dados: Business Object, Session Façade, Application Service, Value List Handler,... DAO: esconde detalhes da fonte de dados DataSource: implementação da fonte de dados Data: objeto de transferência usado para retornar dados ao cliente. Poderia também ser usado para receber dados. ResultSet: resultados de uma pesquisa no banco

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Exemplo - UML (DAO)

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Diagrama de Sequência (DAO)

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Exemplo - Data Access Object (DAO) public interface DAO{ public void insert(Object o); public void update(Object o); public void delete(Object o); public List listAll(); } public class MeuDAO implements DAO{ // construtor e outras coisas aqui... public void insert(Object o){ // implementa o método insert } public void update(Object o){ // implementa o método update } public void delete(Object o){ // implementa o método delete } public List listAll(String sNome){ // implementa o método listAll } O interessante da Classe DAO é que você podem implementar o acesso aos Dados da forma que achar mais estratégica.

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos DTO – Data Tranfer Object DTO == TO ~= VO DTO = Data Transfer Object (Fowler) VO = Value Object (CoreJ2EEPatterns 1ed) TO = Transfer Object (CoreJ2EEPatterns 2ed)

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos DTO – Data Tranfer Object O termo VO foi abandonado pelos autores de Core J2EE Patterns porque já era usado para outra coisa, algo do tipo "objeto imutável que representa um valor, não uma instância". TOs são usados para transporte de dados entre camadas. No seu exemplo, pessoa seria um TO. Basicamente, TOs são objetos que contém apenas dados, isto é, não têm lógica nenhuma, apenas métodos get/set dos seus atributos.

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos DTO – Data Tranfer Object TOs foram "introduzidos" no livro CoreJ2EEPatterns, para superar o problema de tranferência de dados entre camadas (Servlets EJBs), pois na primeira edição eles implicitamente recomendavam a distribuição dos objetos (como se baseava na especificacao antiga, todos os EJBs eram remotos, não existiam interfaces locais). É mais eficiente transportar um objeto com um conjunto de dados agregados do que fazer várias chamadas, uma para cada dado. O padrão também é usado para agregar os dados logicamente. Imagine ter que passar sempre todos os atributos separados nas chamadas de métodos de negócio (métodos com 20 parâmetros?)

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos DTO – Data Tranfer Object Os DAOs também usam DTOs para encapsular um conjunto de dados em um único objeto. Tente imaginar alguma outra coisa... tipo, retornar uma HashMap... horrível, pra todos os casos que eu consigo imaginar. Um DTO normalmente é um bean, mas um bean pode ser qualquer coisa, inclusive um DTO. Por exemplo, no Spring, os componentes que guardam a lógica de negócio são implementados como beans, com suas dependências "injetadas" através dos métodos set. Mas eles não são DTOs, pois a intenção deles não é transportar dados. JavaBeans são apenas componentes que seguem certas convenções, como ser Serializable e usar métodos get/set. Um DTO é um objeto que carrega dados, que normalmente é implementado como um Javabean.

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Exemplo - (DTO) de uma entidade - tbPessoa public class tbPessoaDTO { private int codigo; private String nome; private String bairro; public tbPessoaDTO(int codigo, String nome, String bairro){ this.codigo=codigo; this.nome = nome; this.bairro=bairro; } public int getCodigo() { return codigo; } public void setCodigo(int codigo) { this.codigo = codigo; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String getBairro() { return bairro; } public void setBairro(String bairro) { this.bairro = bairro; } Get´s e Set´s dos atributos da tabela. Uma representação Vazia de uma entidade do Banco

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Exemplo – Um método de uma classe DAO que envia para a View uma Coleção de DTO-tbPessoa public Collection getListanomes() { AcessoDAO dao = new meuDAO(); listanomes = (List) dao.listAll(nome); return listanomes; } public Collection listAll(String sNome){ String sql = "SELECT CODIGO, Nome, BAIRRO FROM tbPessoa WHERE Nome like ?"; List retorno = new ArrayList(); startConnection(); try{ PreparedStatement pst = connection.prepareStatement( sql ); pst.setString(1, "%" + sNome + "%"); ResultSet rs = pst.executeQuery(); while( rs.next() ) { retorno.add(new tbPessoaDTO(rs.getInt("CODIGO"), rs.getString("NOME"), rs.getString("BAIRRO") ) ); } rs.close(); pst.close(); } catch ( SQLException e){ System.err.println ("\nError Menssage: " + e.getMessage()); } destroyConnection(); return retorno; } Bean DAO Envia para camada View um Lista de DTO´s 2ª 3ª 4ª View Solicita uma Lista ao Bean 1ª Carrega uma lista com vários DTO´s, contendo os atributos e seus conteúdos do Resultset

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos Exemplo – Um método de uma classe DAO que envia para a View uma Coleção de DTO-tbPessoa Código Nome Bairro ) Na View é invocada uma propriedade de um BEAN que recebe uma Lista carregada com DTO´s, restando agora apresentar o conteúdo desta lista em uma TABLE HTML. São os atributos definidos no DTO