Saltar al contenido

base de datos: ¿Qué es un ORM, cómo funciona y cómo debo usar uno?

septiembre 29, 2021
apple touch icon@2

Introducción

Mapeo relacional de objetos (ORM) es una técnica que le permite consultar y manipular datos de una base de datos utilizando un paradigma orientado a objetos. Cuando se habla de ORM, la mayoría de la gente se refiere a un Biblioteca que implementa la técnica de mapeo relacional de objetos, de ahí la frase «un ORM».

Una biblioteca ORM es una biblioteca completamente ordinaria escrita en el idioma de su elección que encapsula el código necesario para manipular los datos, por lo que ya no usa SQL; interactúas directamente con un objeto en el mismo idioma que estás usando.

Por ejemplo, aquí hay un caso completamente imaginario con un pseudolenguaje:

Tienes una clase de libros, quieres recuperar todos los libros cuyo autor es «Linus». Manualmente, harías algo como eso:

book_list = new List();
sql = "SELECT book FROM library WHERE author="Linus"";
data = query(sql); // I over simplify ...
while (row = data.next())
{
     book = new Book();
     book.setAuthor(row.get('author');
     book_list.add(book);
}

Con una biblioteca ORM, se vería así:

book_list = BookTable.query(author="Linus");

La parte mecánica se gestiona automáticamente a través de la biblioteca ORM.

Pros y contras

El uso de ORM ahorra mucho tiempo porque:

  • SECO: Usted escribe su modelo de datos en un solo lugar, y es más fácil actualizar, mantener y reutilizar el código.
  • Muchas cosas se hacen automáticamente, desde el manejo de la base de datos hasta I18N.
  • Te obliga a escribir MVC code, que, al final, hace que su código sea un poco más limpio.
  • No tiene que escribir SQL mal formado (la mayoría de los programadores Web realmente lo hacen mal, porque SQL se trata como un «sub» lenguaje, cuando en realidad es muy poderoso y complejo).
  • Higienizante; usar declaraciones o transacciones preparadas es tan fácil como llamar a un método.

El uso de una biblioteca ORM es más flexible porque:

  • Encaja en su forma natural de codificar (¡es su idioma!).
  • Abstrae el sistema de base de datos, por lo que puede cambiarlo cuando lo desee.
  • El modelo está débilmente vinculado al resto de la aplicación, por lo que puede cambiarlo o usarlo en cualquier otro lugar.
  • Te permite usar la bondad de la programación orientada a objetos como la herencia de datos sin dolor de cabeza.

Pero el ORM puede ser un fastidio:

  • Tienes que aprenderlo, y las bibliotecas ORM no son herramientas ligeras;
  • Tienes que configurarlo. El mismo problema.
  • El rendimiento está bien para las consultas habituales, pero un maestro SQL siempre funcionará mejor con su propio SQL para proyectos grandes.
  • Abstrae la base de datos. Si bien está bien si sabe lo que está sucediendo detrás de la escena, es una trampa para los nuevos programadores que pueden escribir declaraciones muy codiciosas, como un gran éxito en un for círculo.

¿Cómo aprender sobre ORM?

Bueno, usa uno. Cualquiera que sea la biblioteca de ORM que elija, todas utilizan los mismos principios. Hay muchas bibliotecas ORM por aquí:

Si desea probar una biblioteca ORM en programación web, sería mejor usar una pila de marco completa como:

  • Symfony (PHP, usando Propel o Doctrine).
  • Django (Python, usando un ORM interno).

No intente escribir su propio ORM, a menos que esté tratando de aprender algo. Este es un trabajo gigantesco, y los antiguos requirieron mucho tiempo y trabajo antes de volverse confiables.

close