database - Qual é a diferença entre um ORM e um ODM?




(3)

Eu estou tentando descobrir qual é a diferença entre ORM e ODM, tanto quanto eu entendo o conceito, ORM (Object Relational Mapper) mapeia as relações entre dados, onde como ODM (objeto Document Mapper) lida com documentos. Estou certo em assumir que o mySQL é um exemplo de ORM e o MongoDB é um exemplo de ODM?

Como eu tenho certeza que você pode ver, eu não estou muito familiarizado com a teoria do conceito. Alguém poderia esclarecer as diferenças entre os dois?


Essencialmente, um ORM usa um driver de banco de dados SQL como ODBC, JDBC ou OLEDB para converter a notação de objeto em notação relacional e um ODM usa uma API JSON ou JSONB para converter a notação de objeto em notação de documento.

Existem diferentes tipos de implementações sob o capô.

PS: JSONB é uma notação de documento de texto JSON armazenada em um formato binário como usado pelo MongoDB.


O Mongoose é um bom exemplo para o ODM (Object Data Model) para o MongoDB, no qual é possível executar diretamente operações com objetos e isso é traduzido na consulta e no esquema apropriados. Pode ser encontrado aqui em https://mongoosejs.com/


Um ORM mapeia entre um Modelo de Objetos e um Banco de Dados Relacional. Um ODM mapeia entre um Modelo de Objeto e um Banco de Dados de Documento. O MySQL não é um ORM, é um banco de dados relacional, mais especificamente, um banco de dados SQL. O MongoDB não é um ODM, é um banco de dados de documentos.







odm