SlideShare ist ein Scribd-Unternehmen logo
1 von 45
Downloaden Sie, um offline zu lesen
Padrões de Projeto para 
Persistência de Dados 
Luan Pereira Lima e Randerson Lessa Melo
Introdução 
● Armazenamento não volátil de dados. 
● Manter em meio físico recuperável: 
○ Banco de dados. 
○ Arquivos.
Motivação 
Existem muitas maneiras de persistir dados ou estruturas de 
dados.
Motivação 
Mas qual é o melhor padrão pra usar em seu projeto?
Motivação 
Quais os critérios que você deve usar para selecionar o 
melhor padrão para seu projeto?
Motivação 
Quando se quer ter dados persistidos, a melhor maneira 
não é colocar as conexões com bancos ou arquivos em 
qualquer parte do sistema.
Motivação 
Mas sim, utilizar padrões! Para assim estabelecer locais na 
aplicação adequados.
Camadas 
Disciplinam o fluxo de mensagens entre certos tipos de 
classes. 
Entendendo
Camadas 
O Modelo de Camadas provê uma forma de se estruturar as 
classes com propósitos semelhantes, ou seja, agrupar em 
uma mesma camada.
Camadas 
Dentro de uma camada, a troca de mensagens entre suas 
classes pode ocorrer livremente.
Camadas Modelo
Camadas Interface 
● Propósito de interação com o usuário. 
● Mensagens fluem desta camada para a de negócios. 
● Mudanças na interface não afetam a camada de 
negócios.
Camadas Negócio 
● Modelam o domínio de problema. 
● Encapsula as funcionalidades da aplicação, sem se 
preocupar com interfaces de usuário e a persistência de 
dados.
Camadas Persistência 
● Agrupa classes que prover criação, remoção, alteração e 
recuperação de dados persistentes. 
● É um front-end que empacota o acesso ao mecanismo 
de persistência.
Camadas Sistema 
● Fornece acesso aos recursos do sistema.
Exemplos de Padrões 
● Active Record 
● DAO (Data Access Object) 
● Data Mapper 
● Repository
PadrãoActive Record 
"Invade" a camada do Modelo/Domínio da aplicação, 
definindo que um Objeto do modelo é o reflexo de uma 
"linha" do banco de dados ou linhas de um arquivo.
PadrãoActive Record 
Objetos que necessitam ser persistentes precisam 
estender/implementar uma classe ou interface que tenha os 
métodos equivalentes a uma linha do banco de dados.
PadrãoActive Record 
O próprio objeto implementa métodos como Salvar, 
Restaurar, Filtrar e etc.
PadrãoActive Record 
Modelo
PadrãoActive Record 
Problemas 
Essa abordagem é muitas vezes considerada uma 
falha no design da aplicação, pelo fato de que o 
Domínio passa a ser subordinado do Banco de dados.
PadrãoActive Record 
Problemas 
Classes enormes, e que retém muita responsabilidade.
PadrãoActive Record 
Problemas 
Utilização em sistemas pequenos, com baixo nível de 
complexidade.
Padrão DAO (Data access object) 
A princípio é que para cada Modelo, temos um DAO 
correspondente.
Padrão DAO (Data access object) 
Toda interação e configuração com o Banco de dados, 
ou com o framework de persistência, ficam na camada 
dos DAO.
Padrão DAO (Data access object) 
Passa a programar métodos como Select, Delete, Insert, 
Update.
Padrão DAO (Data access object) 
Pode-se programar métodos mais específicos, como 
selecioneNomeComLetraTal() 
ou cadastrarFulano().
Padrão DAO (Data access object) 
Modelo
Padrão DAO (Data access object) 
Utilização em sistemas pequenos, com nível baixo de 
complexidade. 
Problemas
Data Mapper 
Separa os objetos de memória do banco de dados. A sua 
responsabilidade é a transferência de dados entre os dois e 
também para isolá-los um do outro. 
Padrão
Data Mapper 
Os objetos de memória não precisam saber ainda que há 
um presente banco de dados. 
Padrão
Data Mapper 
A diferença entre o DAO é que este padrão muitas vezes 
necessita de um framework para trabalhar, pois assim pode 
ser usado seus mapeamentos relacionados a tabela do 
banco de dados. 
Padrão
Data Mapper Padrão 
Modelo
Padrão Problemas 
Data Mapper 
Pequena comunidade, pouca documentação.
Padrão Repository 
Camada de negócio da aplicação, responsável por 
manter e persistir os objetos de Modelo, enquanto isto 
não envolver a infra-estrutura de persistência.
Padrão 
Repository 
Pertencem a camada de aplicação, junto aos modelos.
Padrão 
Sendo parte do modelo, os repositórios não conhecem 
detalhes de infra-estrutura da aplicação (banco de 
dados, http, etc) 
Repository
Padrão 
Repository 
É ai que os DAOs vão atuar, os Repositórios vão 
delegar as chamadas aos DAOs.
Padrão 
Repository 
Os DAOs vão atuar implementando as chamadas mais 
genéricas, select, insert, update e delete.
Padrão Repository 
Modelo
Padrão 
Repository 
Grande número de classes criadas na aplicação. 
Problemas
Conclusão 
Não existe uma receita.
Conclusão 
Todo projeto tem seus próprios problemas e exigem suas 
próprias soluções.
Conclusão 
Na verdade existem formas que auxiliam na decisão do seu 
projeto (designer), cabe a equipe identificar qual o melhor 
padrão para a sua aplicação.
Referências 
➢ Professora Kessia Aline Marques Ferreira 
http://pt.slideshare.net/brenovit/modelo-de-camadas 
➢ Um Manifesto, Programação, web, banco de dados e muito desenvolvimento. 
http://manifesto.blog.br/2.0/Programacao/repository-pattern 
http://manifesto.blog.br/2.0/Programacao/dao-active-record 
➢ Padrão de projeto de software 
https://www.ime.usp.br/~kon/MAC5715/PLoP/2006/refact/RoupaSujaSeLavaEmCasa-ref.pdf 
➢ Persistence Patterns, Jeremy Miller 
http://msdn.microsoft.com/en-us/magazine/dd569757.aspx 
➢ luan_pereira_lima@hotmail.com 
➢ randerson.lessa.melo@gmail.com 
➢ Professor: Camilo Camilo Almendra

Weitere ähnliche Inhalte

Was ist angesagt?

2016: Introdução à Mineração de Dados: Conceitos Básicos, Algoritmos e Aplica...
2016: Introdução à Mineração de Dados: Conceitos Básicos, Algoritmos e Aplica...2016: Introdução à Mineração de Dados: Conceitos Básicos, Algoritmos e Aplica...
2016: Introdução à Mineração de Dados: Conceitos Básicos, Algoritmos e Aplica...Leandro de Castro
 
Introdução à Engenharia de Software e UML
Introdução à Engenharia de Software e UMLIntrodução à Engenharia de Software e UML
Introdução à Engenharia de Software e UMLNatanael Simões
 
Data mining presentation.ppt
Data mining presentation.pptData mining presentation.ppt
Data mining presentation.pptneelamoberoi1030
 
Curso HTML 5 - Aula com Formulários, Imagens, Áudio e Vídeo
Curso HTML 5 - Aula com Formulários, Imagens, Áudio e VídeoCurso HTML 5 - Aula com Formulários, Imagens, Áudio e Vídeo
Curso HTML 5 - Aula com Formulários, Imagens, Áudio e VídeoTiago Antônio da Silva
 
Excel 2010 - Notas e exercícios- parte 1
Excel 2010 - Notas e exercícios- parte 1Excel 2010 - Notas e exercícios- parte 1
Excel 2010 - Notas e exercícios- parte 1Ana Santos
 
SEO - Planejamento, execução e análise
SEO - Planejamento, execução e análiseSEO - Planejamento, execução e análise
SEO - Planejamento, execução e análiseGuga Alves
 
Tutorial - Criando Banco com MySQL Workbench
Tutorial - Criando Banco com MySQL WorkbenchTutorial - Criando Banco com MySQL Workbench
Tutorial - Criando Banco com MySQL WorkbenchDaniel Brandão
 
Monitoramento rede
Monitoramento redeMonitoramento rede
Monitoramento redeAndré Déo
 
Introdução a Banco de Dados
Introdução a Banco de DadosIntrodução a Banco de Dados
Introdução a Banco de DadosDaniel Brandão
 
Criando um banco de dados com MySQL Workbench
Criando um banco de dados com MySQL WorkbenchCriando um banco de dados com MySQL Workbench
Criando um banco de dados com MySQL WorkbenchCentro Paula Souza
 

Was ist angesagt? (14)

Modelos de Banco de dados e SGBDS
Modelos de Banco de dados e SGBDSModelos de Banco de dados e SGBDS
Modelos de Banco de dados e SGBDS
 
2016: Introdução à Mineração de Dados: Conceitos Básicos, Algoritmos e Aplica...
2016: Introdução à Mineração de Dados: Conceitos Básicos, Algoritmos e Aplica...2016: Introdução à Mineração de Dados: Conceitos Básicos, Algoritmos e Aplica...
2016: Introdução à Mineração de Dados: Conceitos Básicos, Algoritmos e Aplica...
 
Introdução à Engenharia de Software e UML
Introdução à Engenharia de Software e UMLIntrodução à Engenharia de Software e UML
Introdução à Engenharia de Software e UML
 
Aula 04 Introdução à navegação na internet - Operador de computador
Aula 04 Introdução à navegação na internet - Operador de computadorAula 04 Introdução à navegação na internet - Operador de computador
Aula 04 Introdução à navegação na internet - Operador de computador
 
Data mining presentation.ppt
Data mining presentation.pptData mining presentation.ppt
Data mining presentation.ppt
 
Curso HTML 5 - Aula com Formulários, Imagens, Áudio e Vídeo
Curso HTML 5 - Aula com Formulários, Imagens, Áudio e VídeoCurso HTML 5 - Aula com Formulários, Imagens, Áudio e Vídeo
Curso HTML 5 - Aula com Formulários, Imagens, Áudio e Vídeo
 
Excel 2010 - Notas e exercícios- parte 1
Excel 2010 - Notas e exercícios- parte 1Excel 2010 - Notas e exercícios- parte 1
Excel 2010 - Notas e exercícios- parte 1
 
SEO - Planejamento, execução e análise
SEO - Planejamento, execução e análiseSEO - Planejamento, execução e análise
SEO - Planejamento, execução e análise
 
Apresentação SEO
Apresentação SEOApresentação SEO
Apresentação SEO
 
Tutorial - Criando Banco com MySQL Workbench
Tutorial - Criando Banco com MySQL WorkbenchTutorial - Criando Banco com MySQL Workbench
Tutorial - Criando Banco com MySQL Workbench
 
Monitoramento rede
Monitoramento redeMonitoramento rede
Monitoramento rede
 
Introdução a Banco de Dados
Introdução a Banco de DadosIntrodução a Banco de Dados
Introdução a Banco de Dados
 
Criando um banco de dados com MySQL Workbench
Criando um banco de dados com MySQL WorkbenchCriando um banco de dados com MySQL Workbench
Criando um banco de dados com MySQL Workbench
 
#5 CRUD no MongoDB
#5   CRUD  no MongoDB#5   CRUD  no MongoDB
#5 CRUD no MongoDB
 

Ähnlich wie Apresentação: Padrões de Projetos para Persistência de Dados

Banco dados i prof ivan (acesse www.portalgsti.com.br)
Banco dados i prof ivan (acesse  www.portalgsti.com.br)Banco dados i prof ivan (acesse  www.portalgsti.com.br)
Banco dados i prof ivan (acesse www.portalgsti.com.br)Andre Sidou
 
Apostila de Banco dados
Apostila de Banco dadosApostila de Banco dados
Apostila de Banco dadosFernando Palma
 
Projeto de Banco de Dados - Capítulo 1
Projeto de Banco de Dados - Capítulo 1Projeto de Banco de Dados - Capítulo 1
Projeto de Banco de Dados - Capítulo 1Januário Neto
 
Banco de Dados Ágeis e Refatoração
Banco de Dados Ágeis e RefatoraçãoBanco de Dados Ágeis e Refatoração
Banco de Dados Ágeis e Refatoraçãoelliando dias
 
1 - BD - Introdução.pdf
1 - BD - Introdução.pdf1 - BD - Introdução.pdf
1 - BD - Introdução.pdfEgnaldo Paulino
 
Arquitetura e sgbd de um banco de dados
Arquitetura e sgbd de um banco de dadosArquitetura e sgbd de um banco de dados
Arquitetura e sgbd de um banco de dadosdiogocbj
 
Universidade federal do amazonas Banco de Dados - Apresentação final
Universidade federal do amazonas   Banco de Dados - Apresentação finalUniversidade federal do amazonas   Banco de Dados - Apresentação final
Universidade federal do amazonas Banco de Dados - Apresentação finalRenan Levy
 
NoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPNoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPAricelio Souza
 
Modelos de dados
Modelos de dadosModelos de dados
Modelos de dadosaeasantos
 
Banco de Dados - Part01
Banco de Dados - Part01Banco de Dados - Part01
Banco de Dados - Part01Rangel Javier
 
Banco de Dados - Introdução - Projeto de Banco de Dados - DER
Banco de Dados - Introdução - Projeto de Banco de Dados - DERBanco de Dados - Introdução - Projeto de Banco de Dados - DER
Banco de Dados - Introdução - Projeto de Banco de Dados - DERRangel Javier
 
Refactoring Databases
Refactoring DatabasesRefactoring Databases
Refactoring DatabasesIsmael
 

Ähnlich wie Apresentação: Padrões de Projetos para Persistência de Dados (20)

Banco de dados parte 01
Banco de dados parte 01Banco de dados parte 01
Banco de dados parte 01
 
Banco dados i prof ivan (acesse www.portalgsti.com.br)
Banco dados i prof ivan (acesse  www.portalgsti.com.br)Banco dados i prof ivan (acesse  www.portalgsti.com.br)
Banco dados i prof ivan (acesse www.portalgsti.com.br)
 
Apostila de Banco dados
Apostila de Banco dadosApostila de Banco dados
Apostila de Banco dados
 
Apostila de banco de dados da ucg
Apostila de banco de dados da ucgApostila de banco de dados da ucg
Apostila de banco de dados da ucg
 
JAVA REFLETCION
JAVA REFLETCIONJAVA REFLETCION
JAVA REFLETCION
 
Artigo Nosql
Artigo NosqlArtigo Nosql
Artigo Nosql
 
Projeto de Banco de Dados - Capítulo 1
Projeto de Banco de Dados - Capítulo 1Projeto de Banco de Dados - Capítulo 1
Projeto de Banco de Dados - Capítulo 1
 
Banco de Dados Ágeis e Refatoração
Banco de Dados Ágeis e RefatoraçãoBanco de Dados Ágeis e Refatoração
Banco de Dados Ágeis e Refatoração
 
No sql o_que_e_isso.key
No sql o_que_e_isso.keyNo sql o_que_e_isso.key
No sql o_que_e_isso.key
 
Artigo c#
Artigo c#Artigo c#
Artigo c#
 
1 - BD - Introdução.pdf
1 - BD - Introdução.pdf1 - BD - Introdução.pdf
1 - BD - Introdução.pdf
 
Arquitetura e sgbd de um banco de dados
Arquitetura e sgbd de um banco de dadosArquitetura e sgbd de um banco de dados
Arquitetura e sgbd de um banco de dados
 
Banco de dados_orientado_a_objetos
Banco de dados_orientado_a_objetosBanco de dados_orientado_a_objetos
Banco de dados_orientado_a_objetos
 
Universidade federal do amazonas Banco de Dados - Apresentação final
Universidade federal do amazonas   Banco de Dados - Apresentação finalUniversidade federal do amazonas   Banco de Dados - Apresentação final
Universidade federal do amazonas Banco de Dados - Apresentação final
 
NoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPNoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAP
 
Modelos de dados
Modelos de dadosModelos de dados
Modelos de dados
 
Banco de Dados - Part01
Banco de Dados - Part01Banco de Dados - Part01
Banco de Dados - Part01
 
Aula1
Aula1Aula1
Aula1
 
Banco de Dados - Introdução - Projeto de Banco de Dados - DER
Banco de Dados - Introdução - Projeto de Banco de Dados - DERBanco de Dados - Introdução - Projeto de Banco de Dados - DER
Banco de Dados - Introdução - Projeto de Banco de Dados - DER
 
Refactoring Databases
Refactoring DatabasesRefactoring Databases
Refactoring Databases
 

Apresentação: Padrões de Projetos para Persistência de Dados

  • 1. Padrões de Projeto para Persistência de Dados Luan Pereira Lima e Randerson Lessa Melo
  • 2. Introdução ● Armazenamento não volátil de dados. ● Manter em meio físico recuperável: ○ Banco de dados. ○ Arquivos.
  • 3. Motivação Existem muitas maneiras de persistir dados ou estruturas de dados.
  • 4. Motivação Mas qual é o melhor padrão pra usar em seu projeto?
  • 5. Motivação Quais os critérios que você deve usar para selecionar o melhor padrão para seu projeto?
  • 6. Motivação Quando se quer ter dados persistidos, a melhor maneira não é colocar as conexões com bancos ou arquivos em qualquer parte do sistema.
  • 7. Motivação Mas sim, utilizar padrões! Para assim estabelecer locais na aplicação adequados.
  • 8. Camadas Disciplinam o fluxo de mensagens entre certos tipos de classes. Entendendo
  • 9. Camadas O Modelo de Camadas provê uma forma de se estruturar as classes com propósitos semelhantes, ou seja, agrupar em uma mesma camada.
  • 10. Camadas Dentro de uma camada, a troca de mensagens entre suas classes pode ocorrer livremente.
  • 12. Camadas Interface ● Propósito de interação com o usuário. ● Mensagens fluem desta camada para a de negócios. ● Mudanças na interface não afetam a camada de negócios.
  • 13. Camadas Negócio ● Modelam o domínio de problema. ● Encapsula as funcionalidades da aplicação, sem se preocupar com interfaces de usuário e a persistência de dados.
  • 14. Camadas Persistência ● Agrupa classes que prover criação, remoção, alteração e recuperação de dados persistentes. ● É um front-end que empacota o acesso ao mecanismo de persistência.
  • 15. Camadas Sistema ● Fornece acesso aos recursos do sistema.
  • 16. Exemplos de Padrões ● Active Record ● DAO (Data Access Object) ● Data Mapper ● Repository
  • 17. PadrãoActive Record "Invade" a camada do Modelo/Domínio da aplicação, definindo que um Objeto do modelo é o reflexo de uma "linha" do banco de dados ou linhas de um arquivo.
  • 18. PadrãoActive Record Objetos que necessitam ser persistentes precisam estender/implementar uma classe ou interface que tenha os métodos equivalentes a uma linha do banco de dados.
  • 19. PadrãoActive Record O próprio objeto implementa métodos como Salvar, Restaurar, Filtrar e etc.
  • 21. PadrãoActive Record Problemas Essa abordagem é muitas vezes considerada uma falha no design da aplicação, pelo fato de que o Domínio passa a ser subordinado do Banco de dados.
  • 22. PadrãoActive Record Problemas Classes enormes, e que retém muita responsabilidade.
  • 23. PadrãoActive Record Problemas Utilização em sistemas pequenos, com baixo nível de complexidade.
  • 24. Padrão DAO (Data access object) A princípio é que para cada Modelo, temos um DAO correspondente.
  • 25. Padrão DAO (Data access object) Toda interação e configuração com o Banco de dados, ou com o framework de persistência, ficam na camada dos DAO.
  • 26. Padrão DAO (Data access object) Passa a programar métodos como Select, Delete, Insert, Update.
  • 27. Padrão DAO (Data access object) Pode-se programar métodos mais específicos, como selecioneNomeComLetraTal() ou cadastrarFulano().
  • 28. Padrão DAO (Data access object) Modelo
  • 29. Padrão DAO (Data access object) Utilização em sistemas pequenos, com nível baixo de complexidade. Problemas
  • 30. Data Mapper Separa os objetos de memória do banco de dados. A sua responsabilidade é a transferência de dados entre os dois e também para isolá-los um do outro. Padrão
  • 31. Data Mapper Os objetos de memória não precisam saber ainda que há um presente banco de dados. Padrão
  • 32. Data Mapper A diferença entre o DAO é que este padrão muitas vezes necessita de um framework para trabalhar, pois assim pode ser usado seus mapeamentos relacionados a tabela do banco de dados. Padrão
  • 34. Padrão Problemas Data Mapper Pequena comunidade, pouca documentação.
  • 35. Padrão Repository Camada de negócio da aplicação, responsável por manter e persistir os objetos de Modelo, enquanto isto não envolver a infra-estrutura de persistência.
  • 36. Padrão Repository Pertencem a camada de aplicação, junto aos modelos.
  • 37. Padrão Sendo parte do modelo, os repositórios não conhecem detalhes de infra-estrutura da aplicação (banco de dados, http, etc) Repository
  • 38. Padrão Repository É ai que os DAOs vão atuar, os Repositórios vão delegar as chamadas aos DAOs.
  • 39. Padrão Repository Os DAOs vão atuar implementando as chamadas mais genéricas, select, insert, update e delete.
  • 41. Padrão Repository Grande número de classes criadas na aplicação. Problemas
  • 42. Conclusão Não existe uma receita.
  • 43. Conclusão Todo projeto tem seus próprios problemas e exigem suas próprias soluções.
  • 44. Conclusão Na verdade existem formas que auxiliam na decisão do seu projeto (designer), cabe a equipe identificar qual o melhor padrão para a sua aplicação.
  • 45. Referências ➢ Professora Kessia Aline Marques Ferreira http://pt.slideshare.net/brenovit/modelo-de-camadas ➢ Um Manifesto, Programação, web, banco de dados e muito desenvolvimento. http://manifesto.blog.br/2.0/Programacao/repository-pattern http://manifesto.blog.br/2.0/Programacao/dao-active-record ➢ Padrão de projeto de software https://www.ime.usp.br/~kon/MAC5715/PLoP/2006/refact/RoupaSujaSeLavaEmCasa-ref.pdf ➢ Persistence Patterns, Jeremy Miller http://msdn.microsoft.com/en-us/magazine/dd569757.aspx ➢ luan_pereira_lima@hotmail.com ➢ randerson.lessa.melo@gmail.com ➢ Professor: Camilo Camilo Almendra