Estoy tratando de averiguar cuál es la diferencia entre ORM y ODM, por lo que entiendo el concepto, ORM (Object Relational Mapper) asigna las relaciones entre los datos, mientras que ODM (Object Document Mapper) se ocupa de los documentos. ¿Estoy en lo cierto al suponer que mySQL es un ejemplo de ORM y MongoDB es un ejemplo de ODM?
Como estoy seguro de que puede ver, no estoy muy familiarizado con la teoría del concepto. ¿Podría alguien aclarar las diferencias entre los dos?
Un ORM se asigna entre un modelo de objetos y una base de datos relacional. Un ODM se asigna entre un modelo de objetos y una base de datos de documentos. MySQL no es un ORM, es una base de datos relacional, más específicamente, una base de datos SQL. MongoDB no es un ODM, es una base de datos de documentos.
fuente
Esencialmente, un ORM usa un controlador de base de datos SQL como ODBC, JDBC u OLEDB para traducir la notación de objeto a notación relacional y un ODM usa una API JSON o JSONB para traducir la notación de objeto a notación de documento.
Hay diferentes tipos de implementaciones bajo el capó.
PD: JSONB es una notación de documento de texto JSON almacenada en formato binario como la utilizada por MongoDB.
fuente
Cuando aprende por primera vez a trabajar con una base de datos, todo se reduce a dos tipos de configuraciones de bases de datos que son ORM (asignación de relación de objeto) y ODM (asignación de documento de objeto)
ORM, que consiste en mapear un objeto con un mundo relacional, básicamente convierte datos entre tipos incompatibles en lenguajes de programación orientados a objetos. ORM envuelve los detalles específicos de implementación de los controladores de almacenamiento en una API (interfaz del programa de aplicación) y asigna los campos relacionales a los miembros de un objeto. Por ejemplo, si tengo una tabla de empleados, se asigna a un solo objeto para todos los empleados, con varios métodos asociados.
ODM, por otro lado, es un Object Document Mapper, que asigna objetos con una base de datos de documentos como MongoDB.
La principal diferencia es que ORM es para bases de datos MySQL, mientras que ODM hace el mapeo para la representación de datos en el documento. La mejor manera de recordar lo que hace ORM sería pensarlo como una hoja de cálculo de Excel, con filas y columnas. Al usar esta configuración, desea asegurarse de tener un gran plan sobre cómo desea abordar la aplicación actual, no permite tantas modificaciones como lo hace ODM. Con ODM podemos agregar nuevos campos y propiedades fácilmente, pero con ORM al agregar un nuevo campo, debe tener en cuenta que nada queda vacío, por lo que necesita un valor predeterminado, a menos que desee entrar en cada uno y modificarlo.
fuente
Mongoose es un buen ejemplo de ODM (Modelo de datos de objetos) para MongoDB en el que puede realizar operaciones directamente con objetos y eso se traduce en la consulta y el esquema adecuados. Se puede encontrar aquí en https://mongoosejs.com/
fuente