Desarrollo de software: conceptos básicos que deberías conocer

- Andrés Cruz -

¿Qué es un ORM (Mapeo Objeto-Relacional) y cómo funciona?

Video thumbnail

En el desarrollo de aplicaciones web modernas con frameworks como Laravel, Django o FastAPI, la gestión de bases de datos se realiza habitualmente mediante un ORM (Object-Relational Mapping o Mapeo Objeto-Relacional). Esta técnica permite conectar la lógica de la aplicación orientada a objetos con los datos relacionales almacenados en la base de datos.

1. El problema de las consultas SQL tradicionales

En enfoques tradicionales con lenguajes como PHP puro, las consultas a la base de datos se escriben directamente concatenando cadenas de texto. Esto presenta varios inconvenientes graves:

  • Vulnerabilidad a SQL Injection: Si los datos proporcionados por el usuario no se depuran o validan correctamente, la aplicación queda expuesta a ataques de inyección SQL, comprometiendo la seguridad de la información privada.
  • Manejo complejo de resultados: Las consultas devuelven matrices (arrays) asociativas crudas, lo que obliga a navegar manualmente entre índices y columnas para procesar la información.

2. ¿Cómo funciona un ORM?

Un ORM actúa como un puente que traduce las tablas de la base de datos en clases y los registros individuales en instancias de objetos. En lugar de escribir sentencias SQL complejas de forma manual, el programador interactúa con métodos orientados a objetos[cite: 3].

Utilizando modelos que heredan de las clases base del framework (como los modelos de Laravel, Django o las herramientas basadas en SQLAlchemy y SQLModel en FastAPI), es posible realizar consultas limpias y estructuradas:

  • Consultas legibles: Uso de métodos encadenados (como where, order_by o like) en lugar de concatenar cadenas SQL de forma propensa a errores.
  • Seguridad integrada: Los ORMs utilizan consultas preparadas de manera nativa, protegiendo la aplicación contra la inyección de código SQL.
  • Modelos orientados a objetos: Los resultados se obtienen directamente como instancias de clases, facilitando el acceso a las propiedades y métodos del negocio.

3. El Patrón Active Record y la Gestión de Esquemas

Muchos frameworks emplean el patrón Active Record, una arquitectura de software donde una clase encapsula tanto los datos (atributos del registro) como la lógica de acceso a la base de datos (métodos para guardar, actualizar o eliminar registros).

Además, los ORMs permiten gestionar el esquema de la base de datos mediante migraciones generadas desde la terminal. Esto ofrece una ventaja fundamental: la capacidad de cambiar de motor de base de datos (por ejemplo, pasar de PostgreSQL a MySQL o MariaDB) de manera transparente, sin necesidad de reescribir la lógica de las consultas en la aplicación.

Así luce una consulta en Django:

# models.py
from django.db import models

class Product(models.Model):
    name = models.CharField(max_length=100)
    price = models.DecimalField(max_digits=8, decimal_places=2)

# Uso del ORM (en una vista o consola)
expensive_products = Product.objects.filter(price__gt=50)

En FastAPI:

# models.py (usando SQLModel)
from sqlmodel import SQLModel, Field, select

class Product(SQLModel, table=True):
    id: int | None = Field(default=None, primary_key=True)
    name: str
    price: float

# Uso del ORM (dentro de un endpoint con una sesión activa)
statement = select(Product).where(Product.price > 50)
expensive_products = session.exec(statement).all()

Y en Laravel:

// app/Models/Product.php
use Illuminate\Database\Eloquent\Model;

class Product extends Model {
    protected $fillable = ['name', 'price'];
}

// Uso del ORM (en un controlador)
$expensiveProducts = Product::where('price', '>', 50)->get();

En todos los casos, son clase que luego reutilizamos.

Conclusión

El término Mapeo Objeto-Relacional resume su propósito principal: transformar los datos estructurados de un sistema relacional en objetos manejables mediante la programación orientada a objetos. Esto optimiza el desarrollo, mejora la seguridad y simplifica el mantenimiento en cualquier proyecto web.

Presentamos conceptos claves que TODOs deberían de conocer como qué es un ORM, MVC, MTV... que debes de saber si eres un desarrollador de software


Únete a la comunidad de desarrolladores que han decidido dejar de picar código y empezar a construir productos reales. Recibe mis mejores trucos de arquitectura cada semana:

Acepto recibir anuncios de interes sobre este Blog.