Post: Persistindo Classes Delphi no MongoDB

Alessandro Medeiros

Fala ai Radizerios e Radizeiras, tudo bom com vocês?

Eu como especialista em MongoDB e Delphi, estarei lhe mostrando neste post como persistir dados no mongo de uma forma prática e simples.

Estarei lhe mostrando umas das formas mais fáceis de você implementar o MongoDB em um software já em produção.

Se você já possui um software em produção, seja ele um ERP ou um PDV já funcionando, orientado a objeto, com usas classes todas persistindo corretamente.

Este é um método mais  fácil de migrar o software para o MongoDB, por que você não irá precisar mexer a nível de programação, isso se sua aplicação está orientada a objeto, mas se você está com dependências isso é uma outra história.

Mas se você está usando o padrão MVC, orientado a objeto, programação funcional, será muito fácil migrar para o MongoDB utilizando essa técnica que irei lhe mostrar aqui neste post.

Irei lhe mostrar a persistência de objetos no MongoDB.

O que seria esse lance de persistência de objetos?

No código baixo mostro uma classe Json, nesta classe estamos aproveitando um recurso que o Delphi criou para trabalhar com a camada Rest, caiu como uma luva para usarmos ele no MongoDB, nesta camada Rest foi criado uma classe que já faz todo trabalho de conversão de qualquer classe, qualquer objeto no Delphi para Json, e com isso nós conseguimos persistir esse Json diretamente no banco sem precisar ter muito trabalho.

Você pode ver quantas linha de códigos foram usadas para essa persistência.


procedure TForm1.C10Click(Sender: TObject);
var
    pCliente : TCliente;
    Doc : TMongoDocument;
    oCrs : IMongoCursor;
begin
    pCliente := TCliente.Create;
    Doc := FEnv.NewDoc;

    try 
        pCliente.Codigo := 1;
        pCliente.Nome := 'Curso Delphi com MongoDB';
        pCliente.Email := 'bittencourtthulio@gmail.com';
        
        Doc.AsJSON := pCliente.ToJSON; 
        
        FConMongo['CURSO']['CLASSTOJSON'].Insert(Doc);

        oCrs := FConMongo['CURSO']['CLASSTOJSON'].Find();
        
        fnc_ativarDataSet(oCrs);
    finally
        pCliente.Free;
        Doc.Free;
    end;
end;

Essas linhas de códigos implementam qualquer classe de sua aplicação no MongoDB.

Mas o que esta sendo feito?

Nós criamos uma classe TCliente.


type 
    TCliente = class
    private
        FCodigo : Integer;
        FNome : String;
        constructor InternalCreate(const Value : String);
    public 
        function ToJSON : String;
        class function FromJSON(const Value : String) : TCliente;
        property Nome: String read FNome write FNome;
        property Codigo: Integer read FCodigo write FCodigo;
    end;

Como você pode ver nós temos dois métodos chamados ToJSON, que transforma a classe para Json, e FromJSom que pega um objeto Json e retornado a classe TCliente.

Olha o que acontece no método ToJSON.


...

function TCliente.ToJSON: String;
begin
    Result := TJson.ObjectToJsonString(Self,[]);
end;

...

Nesse método ele chama a classe TJson, essa classe vem de REST.Json, basta declara-la nas uses do Delphi, nós chamamos o método ObjectToJsonString, e passamos para esse método nosso objeto, neste ponto nós passamos o self que é o nosso TCliente, ele irá retornar um Json desta classe.

O mesmo processo é feito no método FromJson. 


...
class function TCliente.FromJSON(const Value: String): TCliente;
begin
    Result := InternalCreate(Value);
end;

constructor TCliente.InternalCreate(const Value: String);
begin
Create;
    Self := TJson.JsonToObject<TCliente>(Value);
end;
...

FromJson chama o método InternalCreate, que irá criar a classe TCliente e irá chamar a função JsonToObject, nós passamos a classe, e pronto ele já irá retorna os dados prontos e já persistidos no objeto para que possamos trabalhar neles.

Viu com é simples a persistência dos dados no mongo?

Se sua aplicação está seguindo os padrões da orientação a objeto, MVC e programação funcional, você simplesmente irá criar uma classe para persistir esse dados no mongo e pronto, você não irá precisar mexer em suas telas, não irá precisar mexer em mais nada, somente na classe de conexão, na classe DAO, onde você irá fazer seu CRUD é que você vai sobrecarregar para trabalhar com MongoDB para fazer essas conversões.

Analisando o método de conversão

Observe o que foi feito no método de persistência.

Nós instanciamos a classe TCLiente, e o MongoDoc.


...

pCliente := TCliente.Create;
Doc := FEnv.NewDoc;

...

No objeto que instanciamos a classe TCliente nós passamos os dados para o CODIGO e NOME.


...

pCliente.Codigo := 1;
pCliente.Nome := 'Curso Delphi com MongoDB';
...

Feito isso nós pegamos o objeto que recebeu a instancia do MongoDoc, que possui o método AsJson e recebe o Json da classe TCliente, você não irá precisar trabalhar campo a campo, simplesmente ele recebe um Json e já sabe o que deve ser feito, e é o que foi feito no trecho do código abaixo.


...

Doc.AsJSON := pCliente.ToJSON;

...

Logo em seguida pegamos a conexão definindo qual é o banco de dados , a Collection, e mando inserir passando o objeto Doc, e é dado um Find para listar para serem exibidos no DbGrid vendo se os dados foram persistidos.


...

FConMongo['CURSO']['CLASSTOJSON'].Insert(Doc);

oCrs := FConMongo['CURSO']['CLASSTOJSON'].Find();

fnc_ativarDataSet(oCrs);

...

Como você pode observar na imagem abaixo nós não possuímos a Collection informada no código.

Após executarmos em nosso exemplo a chamado do método que persiste os dados.

Veja o resultado em nossa DbGrid.

Veja que os dados foram persistidos no MongoDB sem precisar pegar os dados, varrer os dados da classe, ele já fez isso pra mim de uma forma muito prática.

Mas se eu quiser acrescentar mais campos na minha Collection.

Isso é mais facil ainda.

Você só irá acrescentar em sua classe TCliente.


type
TCliente = class

...

    FEmail: String;

...

    property Email : String read FEmail write FEmail;

Basta simplesmente ir no método que estamos persistindo os dados e acrescentar nosso novo campo.


...

    pCliente.Email := 'bittencourtthulio@gmail.com';

...

Fazendo isso, olha agora a persistência dos dados.

 

Viu como é simples?

Sua aplicação usando os padrões da programação funcional a migração se torna simples usando estas técnicas.

 

Este post foi retirado de um de nossos treinamentos de Certificação Especialista em MongoDB com Delphi.

Neste treinamento você irá aprender as mais diversas técnicas e claro, como trabalhar com esse banco de dados NoSQL.

POR QUE FAZER ESTE TREINAMENTO?

Se você não sabe o que são bancos NoSQL, você está desatualizado com toda a certeza!!! Com o crescimento da web, mais e mais dados passaram a trafegar por todos os lados e devido a isso foram necessárias as criações de novas tecnologias para tratar esses dados, os bancos NoSQL vieram exatamente para preencher essa lacuna, com alta escalabilidade, ótima performance e flexibilidade, eles vem cada vez mais ganhando espaço. O MongoDB é o banco NoSQL mais famoso e mais usado no mercado, graças a sua facilidade de instalação e manutenção, aliado ao Delphi podemos criar soluções completas de forma rápida e simples, já que com o MongoDB você programa pensando na sua aplicação e não mais nas tabelas e formas relacionais dos bancos tradicionais.

Nesse treinamento você irá aprender do zero como instalar o MongoDB e como utilizar todos os recursos possíveis do Delphi com Firedac no MongoDB, além de uma verdadeira viagem sobre modelagem e escalabilidade em bancos NoSQL.

Dê um salto de qualidade na sua carreira e no seu produto!

O que teremos no treinamento:

  • A Mágica RAD do MongoDB com Delphi
  • Viva o Mundo sem Schemas!
  • Um Mongo Performático
  • Na caixa de Ferramentas das Agregações

CLIQUE AQUI PARA SABER MAIS SOBRE O CERTIFICAÇÃO ESPECIALISTA EM MONGODB COM DELPHI





Faça sua busca

CATEGORIAS

POSTS RECENTES

E caso você tem interesse de conhecer mais sobre Persistindo Classes Delphi no MongoDB, acesse o nosso portal do CLUBE DE PROGRAMADORES EM DELPHI
Você não terá só conteúdos relacionados ao Persistindo Classes Delphi no MongoDB, mas uma quantidade enorme de conteúdos que poderá lhe ajudar muito no seu dia a dia, é uma verdadeira NETFLIX para os programadores Delphi.
Gostou?
Compartilhe:

Embarque no foguete com milhares de devs para aprender desenvolvimento, evoluir de forma contínua e se manter relevante no mercado.

Sobre
Dúvidas
Cadastre-se em nossa lista

Para ter acesso em primeira mão, a tudo que acontece na Academia do Código, basta se cadastrar em nossa lista

Grupo Thulio Bittencourt | Academia do Código

#FaçaPartedaHistória

Copyright © 2022 – Todos os direitos reservados