Accede a todo EDteam con un único pago¡Sube a premium!

¿Qué es un ORM y cómo funciona?

¿Sabías que existe otro camino para interactuar con tu base de datos sin necesidad de que aprendas SQL? Se llama ORM y en este blog, te enseñaré cómo funciona.

Diseño web
8 minutos
Hace un año
¿Qué es un ORM y cómo funciona?

Las aplicaciones necesitan datos para funcionar: la información de sus usuarios, productos, servicios, entre otros, y esos datos son almacenados en una base de datos, como lo vimos en nuestro video de Youtube: ¿Qué son las bases de datos y cómo funcionan?

ORM-EDteam.png

La conexión entre la lógica de negocio (el backend) y la fuente de datos, implica leer datos, escribirlos, editarlos o eliminarlos. ¿Cómo se hace? A través de un lenguaje llamado SQL, que realiza estas operaciones. ¿Quieres ampliar esta información? Te lo explicamos en nuestro video ¿SQL o NoSQL? ¿Cuál base de datos es mejor?, también tenemos un curso indispensable: Base de datos SQL desde cero y también te lo explicamos con Goku.

Pero ¿sabías que existe otro camino para interactuar con tu base de datos sin necesidad de que aprendas SQL? Se llama ORM y hoy aprenderás cómo funciona, porque en español, #NadieExplicaMejor que EDteam.

Conceptos clave

Para entender qué es un ORM, primero debemos repasar algunos conceptos:

1. Base de datos

Se trata de cualquier conjunto de datos almacenados y consultados sistemáticamente. Esto significa que debe usarse un sistema para guardar y consultar la información. Sin un sistema, no estamos frente a una base de datos.

Por ejemplo, si llevo una lista de recetas de cocina en un cuaderno, cada una con la misma estructura: título, ingredientes, preparación, etc, estoy frente a una base de datos. Pero si los guardo en papeles sueltos, en dónde a veces pongo los ingredientes y a veces me olvido, no es una base de datos.

Si quieres saber más sobre las bases de datos, tenemos la mejor explicación en español en este video: ¿Qué son las bases de datos y cómo funcionan?

2. SQL

El tipo de bases de datos más usada son las relacionales o SQL. Se llaman así porque los datos se agrupan en tablas (o relaciones), que luego se conectan entre ellas para consultar información.

Por ejemplo, la lista de cursos de EDteam y la lista de los profesores están en tablas separadas y, para saber qué cursos dicta cada profesor, tenemo que hacer las relaciones.

ORM-EDteam.png

Se les llama SQL porque usan el lenguaje SQL (Structured Query Language) para administrar las bases de datos: crear las tablas, hacer consultas, guardar y actualizar la información y definir los permisos. Si quieres saber más de las bases de datos SQL, ve a ver este video en nuestro canal de Youtube.

3. CRUD

Son las iniciales de las cuatro operaciones básicas que se realizan en una base de datos. Este es el primer ejercicio que debe realizar todo programador backend, como te comentamos en este video: Proyectos que debes desarrollar como programador.

  1. Create: crea nuevos registros (o filas) en la base de datos.
  2. Read: lee registros.
  3. Update: actualiza los registros.
  4. Delete: borra registros.

Recuerda que las bases de datos SQL organizan la información en tablas y cada registro es una fila de la tabla.

CRUD-EDteam.png

4. Programación orientada a objetos

Es el paradigma más usado en el mundo de la programación y consiste en abstraer entidades de la aplicación en clases, que son plantillas para crear objetos a partir de ellas.

Imagina una plantilla que contiene toda la estructura de un curso en EDteam: título, descripción, temario, profesor, estudiantes, entre otras. Esa sería la clase Curso, y cada vez que creamos un curso a partir de esa plantilla, estamos creando un objeto curso. Estos objetos tienen propiedades que heredan de la clase (título, profesor, etc).

programación-orientada-a-objetos-EDteam.png

Si siempre te ha mareado la programación orientada a objetos y quieres entenderla de una vez por todas, tenemos la mejor explicación en español en este video de YouTube: ¿Qué es la programación orientad a objetos? y en un curso para que vayas más a fondo: Programación orientada a objetos.

¿Qué es un ORM?

Ahora que conocemos estos conceptos, estamos listos para entender qué es un ORM. Recordemos que toda aplicación tiene una base de datos a la que se necesita acceder para hacer el CRUD. Y eso lo hacemos con consultas SQL (el lenguaje para administrar bases de datos relacionales).

Así que no importa con qué lenguaje de backend trabajes, necesitas SQL para conectarte a la capa de datos.

base-de-datos-backend-EDteam.png

Luego de hacer la consulta SQL, el programador debe mapear estos datos a objetos para trabajar con ellos en su lenguaje de backend (por mapear nos referimos a emparejar). ¿Por qué? Porque si no lo hace, perdería la estructura que tenían en la base de datos.

Por ejemplo, en la base de datos, un curso tiene título, descripción y temario, y queremos que en backend los siga teniendo. Imagínate tener una estructura perfecta en base de datos y perderla al pasar a backend.

base-de-datos-objetos-backend-EDteam.png

Es aquí donde entran los ORM. ORM son las iniciales de Object Relational Mapping, y aunque estas palabras no signifiquen nada para ti en primera impresión, con los conceptos que vimos hace un momento, lo vas a entender muy fácil:

  • Object: hace referencia a la programación orientada a objetos.
  • Relational: hace referencias a las bases de datos relacionales (SQL).
  • Mapping: es un proceso que consiste en emparejar valores.

Entonces, ORM significa Mapeo relacional de objetos o, en otras palabras, es una pieza de software que se encarga de dos cosas:

  1. Hacer consultas e interactuar con la base de datos, usando el lenguaje de backend, sin necesidad de escribir SQL.
  2. Hacer el mapeo de las estructuras de las bases de datos a objetos.

En otras palabras, con un ORM, ya no necesitas escribir (o saber) el lenguaje SQL. Basta leer la documentación del ORM y escribir los métodos para interactuar con la base de datos. El ORM hace el trabajo sucio por debajo y te entrega los datos ya ordenaditos en objetos para que trabajes con ellos.

tablas-campos-propiedades-tabla-ORM-EDteam.png

Un ORM convierte a cada tabla de la base de datos en una clase; a cada fila o registro, en un objeto y a cada campo de esos registros, en una propiedad del objeto. Y todo en tu lenguaje de backend, sin SQL.

¿Quién necesita SQL entonces? Dejemos de aprenderlo ahora mismo.

¿O no?

Ventajas y desventajas de un ORM

La principal ventaja de usar un ORM es evidente: adiós a SQL. Sin embargo, esta a la vez es su principal desventaja y seguro no te será difícil adivinar por qué.

Es excelente que una herramienta te acelere el trabajo y te haga más eficiente, pero ¿qué pasará cuando tengas que hacer una consulta compleja que sobrepase las capacidades de tu ORM? Tendrás que usar SQL. De hecho, todos los ORM te permiten introducir código SQL a mano por si lo necesitas.

¿O qué pasará cuando una consulta hecha a través de un ORM sea lenta y consuma demasiados recursos? ¿Cómo la vas a optimizar si no sabes SQL? Como todo en el mundo de la programación, si quieres llegar lejos, no te saltes etapas, aprende los fundamentos y luego aprende herramientas que te aceleren el trabajo, pero no al revés.

Otro detalle a tener en cuenta es que SQL es un lenguaje transversal, ya sea que uses MySQL, Postgres, SQL Server, Oracle u otros motores, sigues usando el mismo SQL con algunas diferencias mínimas. Mientras que en el caso de los ORM, cada uno tiene una documentación diferente, así que el aprendizaje de un ORM tiene un campo de aplicación definido: el lenguaje o framework con el que estás trabajando. Mientras que el conocimiento de SQL es transversal para cualquier lenguaje o motor.

Finalmente, aprender SQL es más sencillo que aprender un ORM porque es un lenguaje declarativo, es decir, que escribimos el resultado que queremos, sin detenernos a explicar la lógica o el paso a paso para llegar a ese resultado.

Mira este ejemplo:

infografía-EDteam-SQL.png

Le decimos a la base de datos que queremos todos los guerreros Z del universo 7. ¿Cómo se hace eso? Ni idea, nosotros damos la orden y se ejecuta. Eso es un lenguaje declarativo.

Otro ejemplo de lenguaje declarativo es CSS, le decimos al navegador que queremos un fondo rojo y ya. No tenemos idea de qué sucedió internamente para que aparezca ese fondo rojo (ni nos importa).

Por lo tanto, aprender SQL es muy sencillo y vale mucho la pena para tu crecimiento como programador backend. Un ORM es una herramienta excelente para acelerar el trabajo, pero no dejes de aprender SQL.

Principales ORM

Puesto que un ORM se encarga de escribir consultas no en SQL sino en el lenguaje de programación en el que estás trabajando, existen varios ORM. Veamos los principales:

  1. Eloquent para Laravel
  2. Doctrine para Symfony
  3. Hibernate para Java
  4. Entity Framework para C#
  5. TypeORM para JavaScript
  6. ActiveRecord para Ruby on Rails
  7. Gorm para Go
  8. SQL Alchemy para Python

Como resumen de todo lo que hemos visto en este video, te dejo la siguiente infografía:

Como resumen de todo lo que hemos visto en este blog, te dejo la siguiente infografía:

QUÉ-ES-UN-ORM-infografía-EDteam.png

Si quieres descargarla para tenerla entre tus materiales de estudio o usarla en una presentación de la universidad o del trabajo solo ve a nuestra página web (el link está en la descripción) de paso que también conoces todos los cursos que tenemos en EDteam para que domines la tecnología. Y ¿por qué EDteam? Porque en español, nadie te explica mejor.

Y si no sabías que es un ORM, hoy lo aprendiste en EDteam.

Las aplicaciones necesitan datos para funcionar: la información de sus usuarios, productos, servicios, etc y esos datos son almacenados en una base de datos, como lo vimos en este video.

Si quieres dominar la tecnología y la programación EDteam es el mejor lugar. ¿Por qué? Porque en español nadie explica mejor que EDteam y puedes ver las primeras clases de todos nuestros cursos 💻 ed.team/cursos completamente gratis. Y luego puedes subir a premium para acceder a todos los cursos ⭐ ed.team/premium

Comentarios de los usuarios

Pregunta a ChatEDT