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.
1 2 3 4 | 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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | 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.