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.
Manual de referência do DAO Pattern: http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html
Vallew galera. Isso é uma pequena parte do que tenho pesquisado sobre o assunto.
Abraço.
Dadonas
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
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



