Qué es un ORM y cómo y por qué deberías usarlo

Qué es un ORM

ORM son las siglas de Object-Relational Mapping (ORM) es una técnica de programación para convertir datos entre bases de datos relacionales y lenguajes de programación orientados a objetos como Java, C#, etc.

En la programación, los desarrolladores de Java solían adoptar el enfoque JDBC para la persistencia de datos, que implica escribir y ejecutar sentencias SQL para recuperar/actualizar datos en la base de datos. Este enfoque era popular, pero probablemente no era bueno porque SQL puede ser difícil de leer y escribir, propenso a errores y difícil de depurar.

Para facilitar la programación y reducir la posibilidad de cometer errores, muchos desarrolladores prefieren no ejecutar directamente las sentencias SQL, sino construir un modelo de objetos que refleje la estructura de datos. En tiempo de ejecución, los datos serán recuperados de la base de datos y llenados en el modelo de objetos. Los desarrolladores pueden entonces trabajar completamente con los objetos, sin escribir ninguna sentencia SQL. La técnica para convertir datos entre el modelo de objetos y la base de datos relacional se conoce como mapeo objeto-relacional (mapeo ORM, O/RM y O/R).

Si eres relativamente nuevo en el mundo de la programación, términos como Object-Relational-Mapper pueden sonar realmente intimidantes. La parte agradable de los ORMs, es que realmente hacen más fácil escribir código una vez que le coges el truco.

En este post, vamos a intentar explicar lo que hace un ORM, así como los pros y contras de su uso en tus futuros proyectos.

Cómo funciona un ORM

Antes de hablar de lo que es un mapa de objetos, sería mejor hablar primero del mapa de objetos como un concepto.

A menos que hayas trabajado exclusivamente con bases de datos NoSQL, es probable que hayas escrito la parte que le corresponde de consultas SQL. Normalmente tienen un aspecto parecido a este:

SELECT * FROM users WHERE email = 'test@test.com';

El mapeo objeto-relacional es la idea de poder escribir consultas como la anterior, así como otras mucho más complicadas, usando el paradigma orientado a objetos de tu lenguaje de programación preferido.

En resumen, estamos tratando de interactuar con nuestra base de datos usando nuestro lenguaje de elección en lugar de SQL.

Aquí es donde entra en juego el mapa relacional de objetos. Cuando la mayoría de las personas dicen “ORM” se refieren a una biblioteca que implementa esta técnica. Por ejemplo, la consulta anterior se vería ahora algo así:

var orm = require('generic-orm-libarry');var user = orm("users").where({ email: 'test@test.com' });

Como puedes ver, estamos usando una librería ORM imaginaria para ejecutar exactamente la misma consulta, excepto que podemos escribirla en JavaScript (o en cualquier lenguaje que estés usando). Podemos usar los mismos lenguajes que conocemos y amamos, y también abstraer algo de la complejidad de la interfaz con una base de datos.

Como con cualquier técnica, hay compensaciones que deben ser consideradas cuando se utiliza un ORM.

Echemos un vistazo a algunos de los pros y los contras de los ORM.

¿Por qué son tan importantes?

Las soluciones de ORM son útiles para facilitar el desarrollo de APIs basadas en datos. Los usuarios tienen necesidades concretas que impulsan el modelo de datos de una aplicación. En el desarrollo, esta arquitectura de datos se implementa típicamente y se controla la versión utilizando scripts de base de datos como los scripts SQL. A continuación, se utiliza una biblioteca independiente para que la aplicación del servidor ejecute acciones CRUD en la base de datos.

Los ORM funcionan como una API de alto nivel para ejecutar CRUD, y hoy en día los ORM de calidad también nos permiten inicializar los datos a través del código. La manipulación de datos complejos, la limpieza y demás, es a menudo más fácil en el código. Mientras que existen herramientas dedicadas de extracción, transformación y carga (ETL), las mismas tareas ETL pueden ser fácilmente implementadas en ORM.

La implementación de extraer, transformar y cargar con código permite a un sistema integrar más fácilmente los datos de fuentes muy diferentes. Las bases de datos SQL de múltiples sabores, los datos NoSQL, los datos del sistema de archivos y los datos de terceros pueden integrarse en un solo lenguaje con un ORM JavaScript.

Por último, el control de datos orientado al código también permite que un sistema implemente el uso de datos en tiempo de ejecución o en el proceso de construcción, y que adapte de forma flexible el uso durante el proceso de desarrollo según sea necesario.

Para reiterar, los ORM mejoran la productividad del desarrollador al proporcionar una API de alto nivel, en un solo lenguaje, con una funcionalidad que tradicionalmente requeriría varias herramientas y conjuntos de habilidades diferentes. El hecho de que se necesiten menos habilidades, herramientas y horas de trabajo facilita el margen del proyecto. Los requisitos imprevistos y la línea de tiempo del proyecto se preparan mejor con una configuración flexible de datos de construcción y de tiempo de ejecución.

Las ventajas y desventajas del uso de ORM

Ventajas de los ORM

  • Acelera el desarrollo – elimina la necesidad de código SQL repetitivo.
  • Reduce el tiempo de desarrollo.
  • Reduce los costos de desarrollo.
  • Supera las diferencias de SQL específicas de los proveedores – el ORM sabe cómo escribir SQL específicas de los proveedores para que tu no tengas que hacerlo.
  • De todas formas, puedes escribir en el lenguaje que ya estás usando. Si somos honestos, probablemente no somos los mejores escribiendo sentencias SQL. SQL es un lenguaje muy poderoso, pero la mayoría de nosotros no escribimos en él normalmente. Sin embargo, tendemos a tener mucha más fluidez en un lenguaje de programación u otro, y ser capaces de aprovechar esa fluidez es impresionante.
  • Abstrae el sistema de la base de datos para que el cambio de MySQL a PostgreSQL, o cualquier otro sistema que prefieras, sea fácil.
  • Dependiendo del ORM, obtienes un montón de características avanzadas, tales como soporte para transacciones, conexiones, migraciones, semillas, flujos y todo tipo de otras ventajas.
  • Muchas de las consultas que escriba tendrán un mejor rendimiento que si las escribieras tu mismo.

Desventajas de los ORM

  • Pérdida de productividad del desarrollador mientras aprende a programar con ORM.
  • Los desarrolladores puede perder la comprensión de lo que el código está haciendo realmente, el desarrollador tiene más control usando SQL. Como desarrollador, es importante entender lo que está sucediendo bajo el capó. Dado que los ORMs pueden servir como una muleta para evitar la comprensión de las bases de datos y SQL, puede hacer que seas un desarrollador más débil en ese campo.
  • ORM tiene una tendencia a ser lento.
  • ORM no puede competir con las consultas SQL para consultas complejas.
  • Si es un as en SQL, probablemente puedas obtener más consultas de rendimiento escribiéndolas tu mismo.
  • Hay una sobrecarga involucrada en el aprendizaje de cómo usar cualquier ORM dado.
  • La configuración inicial de un ORM puede ser un dolor de cabeza.

¿Cuáles son algunos de los ORM más populares?

Wikipedia tiene una gran lista de ORMs que existen para casi cualquier lenguaje. A esa lista le falta JavaScript, que es uno de los lenguajes preferidos de muchos programadores.

 

Pin It on Pinterest

Shares