Un poco de historia de los ORM
Hace ya unos cuantos años que surgieron los ORMs (del inglés Object Relational Mapping o Mapeo objeto-relacional). Cuando surgieron, se debatió si eran la solución más adecuada al problema de la persistencia:
- Por un lado, estaban los que decían que era una solución subóptima, puesto que se formaban consultas SQL pesadas y patrones de acceso no recomendables.
- Por otro, estaban los que decían que era perder tiempo en problemas que ya están resueltos y no centrarse en los problemas importantes.
Al final, los ORMs se han impuesto a la escritura de consultas SQL a mano. Y también con el tiempo se han ido mejorando el rendimiento de los mismos, desarrollando alternativas más ligeras o MicroORMs, dando la posibilidad de un acceso más rápido y controlado a bases de datos.
¿Qué es un ORM?
Para los que no sepan qué es un ORM, vamos a proceder a explicarlo. Un ORM es una técnica de programación para lograr convertir datos procedentes de una fuente de datos (o base de datos) en un lenguaje orientado a objetos, es decir, en la práctica, consiste en la creación de una base de datos virtual sobre la base de datos relacional.
¿Qué aporta un ORM?
Las ventajas que nos aporta un ORM son claras:
- Nos evita la escritura de consultas SQL a mano.
- Nos garantiza que siempre que cargamos una entidad en sesión, aún obteniéndose con distintas consultas siempre conseguiremos la misma instancia.
- Detecta automáticamente cambios, es decir, si hay algún cambio en alguna entidad, el sistema lo detecta y actualiza la base de datos automáticamente.
- Centralización en el ORM de la definición del esquema de base de datos.
¿Problemas de los ORM?
Como todo, tiene sus desventajas:
- La pérdida clara de rendimiento, sobre todo en la carga de información. Aunque la mayoría de las veces es debido a un mal uso del ORM, puesto que la mayoría tienen varios métodos de lectura.
- Complejidad adicional que introducen, que en muchos casos es innecesaria, dependiendo de lo que se busque, puesto que añadir un ORM para hacer selects o inserts no merece la pena.
Ya, la elección de cada uno, depende de lo que más le conviene según sus proyectos.