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 o ODM (Object Document Mapper) lida com documentos. Estou certo ao supor que o mySQL é um exemplo de ORM e o MongoDB é um exemplo de ODM?
Como tenho certeza de que você pode ver, não estou muito familiarizado com a teoria do conceito. Alguém poderia esclarecer as diferenças entre os dois?
Um ORM é mapeado entre um Modelo de Objeto e um Banco de Dados Relacional. Um ODM mapeia entre um Modelo de Objeto e um Banco de Dados de Documentos. 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.
fonte
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 conforme usado pelo MongoDB.
fonte
Quando você aprende a trabalhar com o banco de dados, tudo se resume a dois tipos de configurações de banco de dados: ORM (Object Relation Mapping) e ODM (Object Document Mapping)
ORM, que é o mapeamento de um objeto com um mundo relacional, basicamente converte dados entre tipos incompatíveis em linguagens de programação orientadas a objetos. O ORM agrupa os detalhes específicos da implementação dos drivers de armazenamento em uma API (interface do programa de aplicativo) e mapeia os campos relacionais para os membros de um objeto. Por exemplo, se eu tiver uma tabela de funcionários, ela será mapeada para um único objeto para todos os funcionários, com vários métodos associados.
O ODM, por outro lado, é um Mapeador de Documentos de Objetos, que mapeia objetos com um Banco de Dados de Documentos como o MongoDB.
A principal diferença é que o ORM é para bancos de dados MySQL, enquanto o ODM faz o mapeamento para representação de dados dos documentos. A melhor maneira de lembrar o que o ORM faz seria pensar nele como uma planilha do Excel, com linhas e colunas. Ao usar essa configuração, você deseja ter um ótimo plano de como deseja lidar com o aplicativo atual; ele não permite tantas modificações quanto o ODM. Com o ODM, podemos adicionar novos campos e propriedades facilmente, mas com o ORM ao adicionar um novo campo, você precisa ter em mente que nada permanece vazio; portanto, é necessário que um valor seja o padrão, a menos que você queira entrar em cada um e modificar.
fonte
O Mongoose é um bom exemplo para o ODM (Object Data Model) para MongoDB, no qual você pode executar operações diretamente com objetos e que é traduzido na consulta e no esquema apropriados. Pode ser encontrado aqui em https://mongoosejs.com/
fonte