Buscar (Don't Edit)

lunes, 11 de noviembre de 2013

Y tú, ¿Ya utilizas un ORM?

Es bien sabido que en el día a día del desarrollo de aplicaciones, una de las tareas que requieren especial cuidado y en las que se dedica una buena parte del tiempo es la de desarrollar la capa de persistencia de datos. Y es que en éste mundo lleno de objetos, la realidad es que la mayoría de las empresas cliente utilizan bases de datos relacionales (y ya quiero verte convenciéndolos de cambiarlas), por lo que al momento de codificar  la capa de acceso a datos nos vemos trabajando con dos paradigmas, que si bien no están peleados del todo, son bastante diferentes. Y aquí es donde entran los frameworks ORM.

El problema radica, como ya mencione en la entrada, al momento de escribir el código para la persistencia de datos, el cuál se realiza dentro de la misma aplicación: escribiendo la sentencia y enviando la petición a nuestro motor de base de datos en turno, quien la ejecuta y nos devuelve un resultado el cuál se tiene que mapear a nuestro correspondiente modelo, y todo lo anterior realizado de manera manual, por lo que todas las ventajas de la orientación a objetos se pierden.


Frameworks ORM (Object Relational Mapping)
Es entonces cuando entran los ORM a solucionar nuestros problemas, ahorrándonos todo el trabajo descrito anteriormente, ya que se encargan de mapear todo nuestro mundo relacional de tablas en base de datos a objetos de negocio de nuestra aplicación, otorgando un buen nivel de abstracción.
Los ORM nos permiten realizar consultas, inserciones, etc. de una manera sencilla, ya que en vez de utilizar lenguaje SQL, dichas instrucciones las realizamos en base a nuestro modelo de objetos y sus relaciones.

Por ejemplo, lo que en SQL es:

SELECT c.* FROM Cliente c INNER JOIN Membresia m ON m.ClienteId=c.ClienteId WHERE m.MembresíaId = 1

Con el lenguaje del ORM hariamos:

FROM Cliente c WHERE c.Membresia.Id = 1

Como ven la instrucción es mas sencilla, aunque por debajo realmente estaríamos haciendo lo mismo. Ésta es sólo una de las ventajas que nos da un ORM, y que se aprecian realmente al momento de realizar una aplicación de mayor tamaño.

Resumiendo, tenemos que un ORM nos otorga las siguientes ventajas:
  • Escribir mucho menos código, al ahorrarnos el trabajo de la capa de acceso a datos.
  • Se complementa fácilmente con un modelo MVC.
  • Tenemos un solo modelo: el de la aplicación. Por lo que las modificaciones se vuelven mas simples.
  • No tenemos que escribir tanto lenguaje SQL.
  • Nos brinda una aplicación 100% orientada a objetos, y con ello todas las ventajas que brinda éste paradigma (herencia, polimorfismo, etc.).

No todo es miel sobre hojuelas
Ok, una vez que ya vimos un poco sobre las ventajas de utilizar un ORM, veamos los contras. 
  • De entrada, el performance. Y es que si bien un ORM nos ahorra escribir gran cantidad de código, todo el trabajo de mapear los objetos con las tablas es realizado por el framework, lo que repercute en el rendimiento de la aplicación cada vez que el mapeo se realiza. Siempre será más rápido ejecutar una query directamente que hacerlo a través del framework.
  • Si no se hace un correcto mapeo, habrá muchos dolores de cabeza.
  • Obviamente existe una curva de aprendizaje.

Algunos framework ORM 
Para concluir, si bien un ORM facilita bastante el desarrollo de una aplicación, no necesariamente debería aplicar para cualquier proyecto (por temas de rendimiento, tamaño de aplicación, etc.). Pero sí es una herramienta bastante útil y que debe tomarse en cuenta, además de que no está de más aprender a utilizarla, ya que muchas empresas requieren desarrolladores que sepan manejar este tipo de tecnología.

Saludos ;)

1 comentario:

  1. Tal vez no esta demas aprender un poco de toco por como dices nunca sabes cuando te pedira algo de ese estilo o no en lugar donde trabajes.

    ResponderBorrar