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
