Camada de Persistência -  Introdução ao DAO Pattern
Autor: Wesley Leal | Publicado: 2013-05-28T04:56:00-07:00



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&nbsp;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

&nbsp; TCliente = class

&nbsp; public

&nbsp;&nbsp;&nbsp; cpf: String;

&nbsp;&nbsp;&nbsp;  nome: String;

&nbsp; end;



O DAO desta classe seria:



type

&nbsp; TClienteDAO = class

&nbsp; public

&nbsp;&nbsp;&nbsp; procedure insertCliente(cliente: Cliente);

&nbsp;&nbsp;&nbsp; function findCliente(cpf: String): TCliente;

&nbsp;&nbsp;&nbsp;  procedure updateCliente(cliente TCliente);

&nbsp;&nbsp;&nbsp; procedure deleteCliente(cliente: TCliente);

&nbsp; 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

&nbsp; cliente: TCliente;

&nbsp;  cliDAO: TClienteDAO;

begin

&nbsp; cliente := cliDAO.findCliente(Edit1.Text);

&nbsp; EditCpf.Text := cliente.cpf;

&nbsp; EditNome.Text := cliente.nome;

end;



No botão inserir:

begin

&nbsp; try

&nbsp;&nbsp;&nbsp; cliDAO.insertCliente(cliente);

&nbsp; except

&nbsp;&nbsp;&nbsp; //tratamento da exception

&nbsp; end;

end;



A aplicação fica muito mais legível desta forma.

    Leia mais em:&nbsp;Camada de Persistência. Introdução ao DAO Pattern&nbsp;http://www.devmedia.com.br/camada-de-persistencia-introducao-ao-dao-pattern/7274#ixzz2UaRygeJL