Fala ai Radizeiro e Radizeira, tudo bem com vocês?

Estamos aqui mais um vez no blog, e nossa série não pode parar.

Em posts anteriores estive mostrando como implementar ORM em uma arquitetura MVC, e no último post de nossa série mostrei como criar um DAO genérico, facilitando assim as implementações e inclusão de novas entidades, agilizando mais ainda a sua implementação.

No post de hoje estarei dando continuidade a nossa série, e iremos criar o Controller de Entidades, o controller é a camada que faz o meio de campo entre a View e o Model, sendo assim para que possamos ter acesso as nossas entidades, iremos precisar também desse controller.

Vamos lá, vamos implementar então a nossa entidade no controller?

Para que nossa entidade venha funcionar no nosso controller, irei precisar adicionar uma nova unit ao projeto, salvando-a na camada de controller chamando de Blog.Controller.Entidades.pas.

I

remos implementar essa nossa classe.

type
   TControllerEntidades = class(TInterfacedObject,iControllerEntidades)
       private
           FMaster : iModelDAO<TMASTER>;
           FCliente : iModelDAO<TCLIENT>;
       public
           constructor Create;
           destructor Destroy; override;
           class function New : iControllerEntidades;
           function Master : iModelDAO<TMASTER>;
           function Cliente : iModelDAO<TCLIENT>;
    end;

implementation

uses
    Blog.Model.DAO;

{ TControllerEntidades }

function TControllerEntidades.Cliente: iModelDAO<TCLIENT>;
begin
    if Not Assigned(FCliente) then
        FCliente := TModelDAO<TCLIENT>.New;
    Result := FCliente;
end;

constructor TControllerEntidades.Create;
begin

end;

destructor TControllerEntidades.Destroy;
begin
    inherited;
end;

function TControllerEntidades.Master: iModelDAO<TMASTER>;
begin
    if Not Assigned(FMaster) then
        FMaster := TModelDAO<TMASTER>.New;
    Result := FMaster;
end;

class function TControllerEntidades.New: iControllerEntidades;
begin
    Result := Self.Create;
end;

end.

Observe que precisamos criar uma variável para cada entidade, mas no normal eu criaria um TDictionary, e armazenaria lá dentro as instâncias, para que eu pudesse recuperar essas instâncias, mas como é uma classe só, eu irei criar uma variável mesmo.

E com isso no método que tratamos as entidades criamos uma espécie de “singleton” mas sem usar a classe, ele retorna o objeto que já está na memória, se não, ele cria um novo, e o retorna.

Somente isso, viu como é difícil…rs

Qual a dificuldade de trabalhar com DAO genérico? Com esse código,  eu só preciso pegar o gerador de entidades do ORMBr, mapear as tabelas do banco de dados, e criar na interface de  controller de entidades, um método que retorna um DAO genérico mapeando a nossa entidade, como fizemos com a entidade master e cliente, e implementar na classe de controller de entidades.

Simples, só um método para cada entidade e pronto, o CRUD já está todo pronto.

Viu como nós automatizamos as nossa implementações, reduzindo significativamente o retrabalho.

Neste treinamento você vai aprender a aplicar técnicas que darão maior escalabilidade em seus softwares criando uma estrutura de forma prática e dinâmica, aplicando os padrões de boas práticas e clean code, além de compreender como aplicar os padrões de persistência de dados sem a necessidade de criar scripts de banco de dados.

CLIQUE AQUI E SAIBA MAIS SOBRE O TREINAMENTO COMO IMPLEMENTAR ORM EM ARQUITETURA MVC