Criação de um Micro ORM

Ortiz de Arcanjo Antonio David - Mar 18 '22 - - Dev Community

ORM (ou Mapeamento de Objecto Relacional) é uma técnica de desenvolvimento utilizada converter tabelas do banco de dados em classes e reduzir a dificuldade na manipulação de bancos de dados relacionais.
Micro ORM é um subconjunto de um ORM, isto é, possui menos funcionalidades.

Porque usar um ORM?

Os ORMs trazem muitas vantagens, entre elas:

  • Mapeamento classe – tabela da base de dados;
  • O registo da base, torna-se um objecto;
  • Abstração de consultas SQL, evitando repetição
  • Uso de SQL bruto (Raw SQL), quando necessário;
  • Abstração das configurações da base de dados;
  • Migração de dados;

Como construir um Micro ORM ?

Para construir um micro orm precisamos dos seguintes itens:

  • Configuração: Host, Porta, nome da base dados e palavra passe;
  • Conexão: Conexão com um ou mais bases de acordo a configuração;
  • Classe para representar a tabela, com a sua chave e as operações básicas;
  • Classe para construção de consultas mais complexas (Query Builder);
  • Mecanismo de serialização de dados vindo da BD.

Exemplos de ORMs

A maioria das linguagens possuem ORMs conceituados entre elas:

  • PHP: Doctrine e Eloquent;
  • Elixir: Ecto;
  • Java: Hibernate e JPA;
  • C#: Entity e Dapper;
  • Python: SQLAlchemy e Django ORM;
  • Ruby: ActiveRecord e DataMaper;
  • Go: Gorm;

Observação: Em muitos casos, os ORMs exigem uma configuração complexa além de serem difíceis de manusear. Alguns programadores sentem-se presos na estrutura do ORM. Noutros alguns casos a configuração é feita num arquivo XML ou anotações (Ex: Hibernate) e noutros uma simples operação é necessário invocar muitos objectos.

Há linguagens facilitam a uso de ORMs, devido a facilidade de serialização de objectos e a manipulação de estrututuras com chave valor (arrays associativos ou dicionários). Nessas linguagens o acesso ao dados torna-se natural, tais como: Javascript, PHP e Python.

Exemplo: Neste exemplo vamos criar um micro ORM em PHP para os bancos MySQL e PostgreSQL.
Problema: Criar uma base de dados para Clientes. Os clientes possuem dados pessoais e contactos.

Diagrama de Classes
Image description

Trecho de Código Table
Image description

Trecho de código Query
Image description

Modelo Lógico (Clientes e Contactos)
Image description

Exemplo Query
Image description

Exemplo Table
Image description

Listagem de todos os Clientes
Image description

Filtros
Image description

Intervalo de valores
Image description

Queiries
Image description

Código disponível em: https://www.github.com/ortizdavid/php-micro-orm
Para mais artigos:
https://www.dev.to/ortizdavid
https://www.medium.com/@ortizaad1994

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Terabox Video Player