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.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950type
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