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