El mapeo objeto-relacional (ORM) es una técnica de programación para convertir datos entre sistemas de tipos incompatibles en lenguajes de programación orientados a objetos. Esto crea, en efecto, una "base de datos de objetos virtual" que puede utilizarse desde el lenguaje de programación. Existen paquetes gratuitos y comerciales que realizan el mapeo objeto-relacional, aunque algunos programadores optan por crear sus propias herramientas ORM.
El ORM es una capa entre la base de datos y la aplicación que permite que ambas trabajen juntas. En teoría, se supone que ORM hace que el trabajo con las bases de datos sea mucho más fácil y eficiente, además de mejorar la calidad general del código. Sin embargo, en la práctica, ORM puede ser bastante complejo y en realidad puede introducir más problemas de los que resuelve.
Hay varios enfoques diferentes de ORM, cada uno con sus propias ventajas y desventajas. Las herramientas ORM más populares son Active Record, Data Mapper y Unit of Work.
Active Record es el patrón ORM más común. Es simple y fácil de usar, pero puede ser inflexible y no escala bien.
El mapeador de datos es un patrón más flexible que separa el modelo de dominio de la capa de persistencia. Esto puede hacer que el código sea más difícil de entender y mantener, pero es más escalable y con mayor rendimiento.
La unidad de trabajo es un patrón que rastrea los cambios en los objetos y sólo los persiste en la base de datos cuando es necesario. Esto puede hacer que el código sea más complejo, pero puede mejorar el rendimiento al reducir el número de consultas a la base de datos.
¿Por qué ORM es más lento que las consultas en bruto?
ORM es un Object Relational Mapper, que es una herramienta que ayuda a mapear los datos de una base de datos relacional a un lenguaje de programación orientado a objetos. La razón principal por la que ORM es más lento que el raw query es porque tiene que mapear los datos de la base de datos en objetos, lo que lleva tiempo. Además, el ORM suele utilizar mucha memoria porque tiene que hacer un seguimiento de todos los objetos que ha mapeado.
ORM puede ser más lento que el SQL crudo.
La razón principal por la que ORM puede ser más lento que SQL sin procesar es que ORM está diseñado para ser abstracto y genérico, mientras que SQL está diseñado para ser específico para una base de datos en particular. ORM debe añadir una capa de abstracción a SQL para poder interactuar con otras bases de datos. Esto puede causar problemas. Además, el ORM a veces puede generar consultas SQL ineficientes, lo que también puede provocar problemas de rendimiento. ¿Es ORM un marco de trabajo? No, ORM no es un framework. ORM es una biblioteca que proporciona una capa de abstracción sobre las interacciones con la base de datos. ¿En qué consiste el ORM? Un ORM es un mapeador relacional de objetos. Es una pieza de software que mapea entre objetos en su código y registros en una base de datos. Esto le permite trabajar con los datos de la base de datos de una manera orientada a objetos, sin tener que escribir SQL. ¿Por qué Hibernate se llama ORM? ORM son las siglas de Object-Relational Mapping. Hibernate es una herramienta ORM que proporciona un marco de trabajo para mapear un modelo de dominio orientado a objetos a una base de datos relacional.