Lo que los ORM me han enseñado: aprenda SQL directamente

Fuentes: What ORMs have taught me: just learn SQL

Este artículo reflexiona sobre las limitaciones de los mapeadores objeto-relacional (ORM) a partir de la experiencia profesional de su autor durante treinta meses trabajando con Postgres y SQLite, principalmente con SQLAlchemy y Hibernate. Su tesis central es que los ORM resultan más un obstáculo que una ayuda cuando sustituyen al SQL en lugar de complementarlo.

El texto aborda cinco problemas recurrentes. El primero es el "crecimiento descontrolado de atributos", que convierte las consultas en equivalentes de SELECT * y dispara el tiempo de ejecución cuando una entidad acumula decenas o cientos de columnas. El segundo es el uso excesivo de claves externas, que dispara el número de uniones al recuperar un objeto (el autor cita un caso con más de 600 atributos y 14 joins).

El tercero se refiere a la recuperación de datos: las consultas ORM suelen ser más ofuscadas que el SQL equivalente y obligan a trasladar trabajo al código cuando se renuncia a funciones avanzadas como las funciones ventana. El cuarto es la doble definición del esquema, que aparece tanto en la base de datos como en la aplicación y complica las migraciones. El quinto es la gestión de identidades y transacciones, conceptos que encajan mal con los modelos de memoria y el alcance léxico típicos de los lenguajes de programación.

La conclusión operativa del autor es clara: si para usar un ORM de forma eficiente hay que conocer SQL, conviene escribir directamente SQL y mantener la definición de los datos en la base de datos, utilizando las consultas como API hacia ella.