DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 
DevWare  
Novidade: DevMedia lança o DevWare - Saiba mais!

Camada de Persistência. Introdução ao DAO Pattern

Sem dúvida a Orientação a Objetos é a forma definitiva de programar atualmente. Todavia, todos aqueles que aderem à ela, em determinado momento se pergunta: Minha classe está pronta, meu objeto está em memória e com os atributos configurados. E agora, como vou guardar seu estado? A resposta é: Camada de Persistência.

[fechar]

Você não gostou da qualidade deste conteúdo?

(opcional) Você gostaria de comentar o que não lhe agradou?

A Programação Orientada a Objetos é um paradgma de programação que pode muito bem solucionar um dos maiores problemas de qualquer programador: a mudança. O usuário, na maioria das vezes não sabe realmente o que ele precisa, ou não entendemos ao certo as suas necessidades e isso ocasiona diversas mudanças durante o ciclo de vida do software. É necessário então desenvolver uma aplicação flexível, pronta para mudar.
A POO nos permite isso, mas hoje vivemos a realidade em que a maioria dos bancos de dados das empresas são relacionais e não armazenam objetos. Todavia, quando criamos uma instância do nosso objeto e, na aplicação configuramos seu estado, temos a necessidade de gravar tudo isso que foi feito.
Precisamos de algo que pegue esse objeto e envie ele para o banco de tal forma que não precisemos ficar montando sentenças SQL na aplicação como INSERT, SELECT, UPDATE ou DELETE. Neste momento, que quase todas as aplicações devem passar, surge a necessidade da criação de uma Camada de Persistência.
A arquitetura comumente usada hoje em dia é a arquitetura multicamadas. Temos então a interface, camada de negócios e banco de dados. A Camada de Persitência ficará então entre a camada de negócios e o bando de dados.
As operações básicas de uma camada de persistência são conhecidas como CRUD (Create, Retrieve(ou Read), Update e Delete). A camada de persistência deve fazer essas operações de forma transparente para a aplicação. Isso faz com que a aplicação fique mais enxuta para tratar os problemas do usuário e não problemas com armazenamento e recuperação de dados.
Existe um padrão para a criação desta camada de persistência. Ele se chama DAO Pattern.
O DAO(Data Access Object) Pattern propõe que tenhamos todas essas operações CRUD de forma transparente.
Suponhamos que temos que criar um cadastro de clientes. Teriamos então uma classe da seguinte forma:
 
type
  TCliente = class
  public
    cpf: String;
    nome: String;
  end;
 
O DAO desta classe seria:
 
type
  TClienteDAO = class
  public
    procedure insertCliente(cliente: Cliente);
    function findCliente(cpf: String): TCliente;
    procedure updateCliente(cliente TCliente);
    procedure deleteCliente(cliente: TCliente);
  end;
 
Esta classe DAO, como se vê, é responsável por encapsular as operações CRUD. Dentro dela serão montadas as sentenças SQL necessárias para inserir, recuperar, atualizar e deletar os registros da tabela.
Na interface poderiamos fazer o seguinte então:
 
No botão pesquisar:
var
  cliente: TCliente;
  cliDAO: TClienteDAO;
begin
  cliente := cliDAO.findCliente(Edit1.Text);
  EditCpf.Text := cliente.cpf;
  EditNome.Text := cliente.nome;
end;
 
No botão inserir:
begin
  try
    cliDAO.insertCliente(cliente);
  except
    //tratamento da exception
  end;
end;
 
A aplicação fica muito mais legível desta forma.
 
 
Vallew galera. Isso é uma pequena parte do que tenho pesquisado sobre o assunto.
 
Abraço.
 
Dadonas
   
 
 
 

Desconhecido Da Silva
Danilo Dadonas(dadonas@democrata.com.br) é graduado em Sistemas de Informação. Atua como desenvolvedor Senior para uma indústria calçadista.
O que você achou deste post?

    6 COMENTÁRIOS

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



Sergio
não é metendo o pau, sei que não postei nada, mas acho que se for para adicionar um post, tem que ser completo, primeiro os membros da classe cliente teriam que ser privado e acessado via metodos get e set. a classe DAO teria que ser o datamodule, tipo DMDAOCLIENTE, esse faz o papel da camada de persistência.
[há +1 ano] - Responder

 

Danilo Dadonas Freitas
Boa tarde Sergio. Obrigado por expressar a sua opnião, mas a minha intenção ao postar o artigo, é lançar a idéia, e não esgotar o assunto. Quando descobri o DAO, não havia ninguém para me ensinar o que deveria fazer, muito menos no Delphi. O DAO no Delphi ainda depende da criatividade de cada um. Coloquei no artigo o link de onde achei o material no ste da Sun. O exemplo que propus no artigo é meramente ilustrativa...na verdade o ideal é usar properties para os atributos.
[há +1 ano] - Responder
 

Alexandre Do Amaral E Silva Neto
Achei bem interessante o post do Danino sobre o assunto. Assim como eu, muitos devem ter despertado para essa tecnologia após ler esse post, parabéns! Sérgio, não quero polemizar, mas vc pareceu ter conhecimento sobre o assunto, então que tal o amigo postar algo para enriquecer um pouco mais o nosso conhecimento sobre esta fantástica ferramenta que é o Delphi ?! Fica a sugestão. E quanto ao Danilo, posta aí algo mais aprofundado sobre o tema.
[há +1 ano] - Responder
 

Danilo Dadonas Freitas
Boa tarde Alexandre. Nesta semana vou escrever uma segunda parte do artigo com um exemplo prtático pra ficar mais claro o que essa tecnologia tem pra nos oferecer. Uma coisa interessante é que com isso pude criar um padrão de desenvolvimento.
[há +1 ano] - Responder
 

Sergio
Danilo caso você queira uma juda para escrever esse artigo, esárei a disposição, tenho algumas maneiras de se fazer as coisas e quero postar aqui para outros desenvolvedores. pauldiano66@hotmail.com meu msn beleza e podemos trocar figurinhas tambem,abraços, e não foi querendo te criticar,mas apenas fui sincerto, se fosse no meu caso eu tambem gostária que as pessoas fossem sinceras.
[há +1 ano] - Responder

 

J
É... Realmente, muito fraco! Sou programador Java e estava curioso em como é utilizado o padrão DAO em Object Pascal, e me deparei com este "artigo"... Q perda de tempo!
[há +1 ano] - Responder

 
Cursos relacionados
Publicidade
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
[Fechar] Você precisa estar logado para dar seu feedback.

Clique aqui para efetuar o login

Caso não tenha um cadastro DevMedia, clique aqui para se cadastrar (gratuito)
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03