Home Assistant Fácil

Curso de Home Assistant y domótica

  • Blog
  • Soy un pardillo
  • Podcast
  • Curso Arduino
  • Curso Domótica
  • Acceder
Usted está aquí: Inicio / Blog / ¿Qué es un ORM?

¿Qué es un ORM?

Luis del Valle Hernández

Mapeo objeto-relacional

Hoy hablamos del Mapeo Objeto-Relacional o como se conocen comúnmente, ORM (del inglés Object Relational Mapping). Algunos de vosotros ya sabréis que son pero, para aquellos que no los conozcan, un ORM te permite convertir los datos de tus objectos en un formato correcto para poder guardar la información en una base de datos (mapeo) creándose una base de datos virtual donde los datos que se encuentran en nuestra aplicación, quedan vinculados a la base de datos (persistencia).

Si alguna vez has programado alguna aplicación que se conecta a una base de datos, habrás podido comprobar lo laborioso que es transformar toda la información que recibes de la base datos, principalmente en tablas, en los objetos de tu aplicación y viceversa. A ésto se le denomina mapeo. Utilizando un ORM este mapeo será automático, es más, será independiente de la base de datos que estés utilizando en ese momento pudiendo cambiar de motor de base de datos según tus necesidades.Veamos un ejemplo. Supongamos que tenemos una tabla de clientes. En nuestra aplicación queremos hacer las funciones básicas sobre base de datos CRUD (del inglés Create, Read, Update and Delete) Crear, Obtener, Actualizar y Borrar. Cada operación corresponde con una sentencia SQL.

  • Creear: INSERT
  • Obtener: SELECT
  • Actualizar: UPDATE
  • Borrar: DELETE

Si queremos insertar un cliente nuevo y no utilizamos un ORM, el código quedaría de la siguiente manera si utilizamos C#:

String query = "INSERT INTO clientes (id,nombre,email,pais) VALUES (@id, @nombre, @email, @pais)";

command.Parameters.AddWithValue("@id","1")
command.Parameters.AddWithValue("@nombre","nombre")
command.Parameters.AddWithValue("@email","email")
command.Parameters.AddWithValue("@pais","pais")

command.ExecuteNonQuery();

En cambio si utilizamos un ORM, el código se puede reducir de la siguiente manera:

var cliente = new Cliente();
cliente.Id = "1";
cliente.Nombre = "nombre";
cliente.Email = "email";
cliente.Pais = "pais";
session.Save(customer);

Como podéis comprobar se ha reducido considerablemente el código. Pero lo más importante de todo, bajo mi punto de vista, es que, imaginaros que ahora modificamos la tabla de nuestra base de datos y añadimos un campo más como por ejemplo el apellido de nuestro cliente. En los dos casos, tendríamos que añadir a nuestra clase Cliente la propiedad correspondiente al apellido pero, si no utilizas un ORM te tocará revisarte todas las sentencias INSERT, SELECT y UPDATE para introducir dicho campo en cada una de ellas. En cambio si utilizas un ORM , lo único que tendrás que hacer será añadir la propiedad a la clase correspondiente. La sentencia save seguirá siendo la misma, el ORM  se encargará de modificar los INSERT, SELECT y UPDATE por ti. Esto se cumple hasta cierto punto. Hay algún ORM como MyBatis, que utiliza un híbrido entre los dos mundos. En MyBatis, las sentencias SQL están escritas en archivos XML. Esto implica que si modificas la base de datos, también tendrás que modificar las sentencias del XML correspondiente.

Además de lo que hemos visto hasta el momento, gracias a los ORM nos abstraemos del motor de base de datos que estamos utilizando es decir, si en algún momento queremos cambiar de base de datos, nos resultará sumamente sencillo. En algunos casos con solo cambiar un par de líneas de código, estaremos cambiando de motor de base de datos.
Existen varios ORM en el mercado. Todo dependerá del lenguaje de programación que estemos utilizando y de nuestras necesidades. A continuación podemos ver los ORM para algunos lenguajes de programación:

  • Hibernate (Java)
  • MyBatis (Java)
  • Ebean (Java)
  • Entity Famework (.NET)
  • NHibernate (.NET)
  • MyBatis.NET (.NET)
  • Doctrine (PHP)
  • Propel (PHP)
  • Rocks (PHP)
  • Torpor (PHP)

Si en algún momento desarrolláis alguna aplicación con acceso a base de datos, no dudéis en utilizar un ORM, os simplificará el trabajo enormemente.

slzb-06

SLZB-06U: migrar coordinador Zigbee desde Sonoff Dongle P (y por qué el Dongle E es diferente)

Vale, lo confieso: no hay nada que me dé más pereza en domótica que tener que migrar toda la red Zigbee. El típico momento en el que tu viejo … [+ info...]

Home Assistant 2026.6

Home Assistant 2026.6: dashboard inteligente, IR bidireccional y automatizaciones más claras

Llevas meses peleándote con el dashboard de Home Assistant: añadir una tarjeta requería saber de memoria el nombre de cada tipo de bloque, y al final … [+ info...]

MATTER HOME ASSISTANT

Matter Home Assistant: Thread local sin nube

Hay automatizaciones que parecen una chorrada hasta que las vives todos los días. Sesenta minutos después del amanecer, los toldos de mi terraza bajan … [+ info...]

Copyright © 2026 · Programar Fácil · Aviso legal