Discusión sobre el artículo "Simplificación de bases de datos en MQL5 (Parte 2): Uso de la metaprogramación para crear entidades"

Artículo publicado Simplificación de bases de datos en MQL5 (Parte 2): Uso de la metaprogramación para crear entidades:

Hoy hemos analizado el uso avanzado de #define para la metaprogramación en MQL5, creando entidades que representan tablas y metadatos de columnas (tipo, clave primaria, autoincremento, posibilidad de valores nulos, etc.). Además, hemos centralizado estas definiciones en el archivo TickORM.mqh, automatizando la generación de clases de metadatos y allanando el camino para una manipulación eficiente de los datos por parte del ORM, sin necesidad de escribir SQL manualmente.

En el artículo anterior, dimos los primeros pasos para comprender cómo gestiona MQL5 las bases de datos: creamos tablas, insertamos, actualizamos y eliminamos registros, e incluso exploramos las funciones de transacciones, así como la importación y exportación de datos. Todo esto se hizo de forma directa, utilizando SQL escrito directamente y llamando a las funciones nativas que ofrece el lenguaje. Este paso fue fundamental, ya que sentó las bases sobre las que se construirá cualquier capa de abstracción. Pero ahora surge una pregunta inevitable: ¿queremos escribir código SQL cada vez que necesitemos gestionar datos en nuestros robots e indicadores?

Si consideramos un sistema más robusto, la respuesta es no. Trabajar exclusivamente con SQL hace que el código resulte prolijo, repetitivo y propenso a errores, sobre todo a medida que la aplicación crece y empieza a gestionar múltiples tablas, relaciones y validaciones. Aquí es donde entra en juego un ORM (mapeo objeto-relacional): una forma de tender un puente entre el mundo orientado a objetos en el que programamos y el mundo relacional en el que se almacenan los datos. El primer paso en esta dirección consiste en crear una forma de representar las tablas de la base de datos directamente como clases en MQL5.

En este segundo artículo, aprenderemos a utilizar una característica del lenguaje que a menudo se subestima, pero que resulta extremadamente potente: #define. Esto nos permitirá automatizar y estandarizar la creación de estructuras, evitando duplicidades y facilitando futuras ampliaciones. Con él, crearemos nuestras primeras entidades (clases que representan tablas) y también un mecanismo para describir los metadatos de las columnas, como el tipo de datos, la clave primaria, el autoincremento, los campos obligatorios y los valores por defecto.

Este enfoque servirá de base para todo lo que venga a continuación: repositorios, generadores de consultas y creación automática de tablas. En otras palabras, estamos empezando a dar forma al ORM de MQL5 tal y como lo habíamos concebido desde el principio.


Autor: joaopedrodev