A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos"— Transcrição da apresentação:

1 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com 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.

2 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com 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.

3 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com 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.

4 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com 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.

5 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com 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.

6 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com 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

7 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com 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

8 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com Exemplo - UML (DAO)

9 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com Diagrama de Sequência (DAO)

10 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com 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.

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

12 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com 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.

13 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com 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?)

14 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com 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.

15 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com 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

16 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com 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

17 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com 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


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

Apresentações semelhantes


Anúncios Google