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

Nossa série de post de MVC com ORM está ficando muito legal.

Claro que não poderia faltar mais um episódio dessa nossa série, e nesse episódio iremos criar nossa classe de query, lembra que em posts anteriores falei de abstrairmos nossas conexões e que iríamos precisar de uma classe de query.

Então é agora que nesse nosso episódio estaremos fazendo isso…

Vamos lá?

Já criamos nossa classe de conexão, mas só com a conexão não iremos conseguir fazer nada né, então vamos criar uma interface para essa nossa Query.

Como vamos utilizar um ORM não iremos utilizar a Query propriamente dita, mas o FDMentable, mas se for Query é a mesma coisa.

    iModelQuery = interface
        ['{A3826142-023B-4397-B005-0B2401712F0D}']
        function Query : TDataSet;
    end;

Observe que criamos um método chamado Query que tem como retorno o TDataSet, seguindo o mesmo padrão que fizemos na interface de conexão onde usamos o tipo mais ancestral possível.

Agora precisamos ter uma classe que implementa essa nossa interface.

type
  TModelConexaoFiredacQuery = class (TInterfacedObject, iModelQuery)
    private
      FQuery : TFDMemtable;
    public
      constructor Create;
      destructor Destroy; override;
      class function New : iModelQuery;
      function Query : TDataSet;
  end;

implementation

{ TModelConexaoFiredacQuery }

constructor TModelConexaoFiredacQuery.Create;
begin
  FQuery := TFDMemtable.Create(nil);
end;

destructor TModelConexaoFiredacQuery.Destroy;
begin
  FQuery.DisposeOf;
  inherited;
end;

class function TModelConexaoFiredacQuery.New: iModelQuery;
begin
  Result := Self.Create;
end;

function TModelConexaoFiredacQuery.Query: TDataSet;
begin
  Result := FQuery;
end;

Você pode esta estranhando ou indagando, por que eu coloquei um nome muito grande da minha classe? Eu faço isso pois é uma boa prática, seguindo os padrões do clean code, porque se você colocar abreviado nem sempre poderá compreender para que e de onde é essa classe, dessa forma você saber de onde é e para que é essa classe, simples assim.

Agora temos as diretivas para uma conexão com o banco de dados, dessa forma você pode observar que não temos nenhum acoplamento, e eu estou trabalhando com a camada mais genérica desses componentes de conexão, dessa forma posso todo o resto do meu projeto não precisa conhecer quem é o meu Dataset, se é FDMentable ou qualquer outro.

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