web-dev-qa-db-fra.com

Quelle est la différence entre un ORM et un ODM?

J'essaie de comprendre la différence entre ORM et ODM, autant que je comprends le concept, ORM (Object Relational Mapper) mappe les relations entre les données, alors qu'ODM (Object Document Mapper) traite les documents. Ai-je raison de supposer que MySQL est un exemple d'ORM et MongoDB est un exemple d'ODM?

Comme vous pouvez le constater, je ne suis pas trop au courant de la théorie du concept. Quelqu'un pourrait-il clarifier les différences entre les deux?

120
Odyss3us

MySQL est un exemple de base de données relationnelle. Vous utiliseriez un ORM pour faire la traduction entre vos objets en code et la représentation relationnelle des données.

Des exemples de ORM sont nHibernate , Entity Framework , Dapper et plus ...

MongoDB est un exemple de base de données de documents. Vous utiliseriez un ODM pour effectuer la traduction entre vos objets en code et la représentation des données par le document (si nécessaire).

Mandango est un exemple d'ODM pour MongoDB.

142
Oded

Un ORM mappe entre un modèle d'objet et une base de données relationnelle. Un ODM mappe entre un modèle d'objet et une base de données de documents. MySQL n'est pas un ORM, c'est une base de données relationnelle, plus spécifiquement, une base de données SQL. MongoDB n'est pas un ODM, c'est une base de données de documents.

22
Jörg W Mittag

Essentiellement, un ORM utilise un pilote de base de données SQL tel que ODBC, JDBC ou OLEDB pour traduire la notation d'objet en notation relationnelle et un ODM utilise une API JSON ou JSONB pour traduire la notation Object en notation Document.

Il existe différents types de mises en œuvre sous le capot.

PS: JSONB est une notation de document texte JSON stockée dans un format binaire utilisé par MongoDB.

8
Fernando Santucci

Lorsque vous apprenez pour la première fois à utiliser une base de données, vous disposez de deux types de configurations de base de données, à savoir ORM (object Relation Mapping) et ODM (Object Document Mapping).

ORM qui consiste à mapper un objet avec un monde relationnel, il convertit essentiellement les données entre types incompatibles dans les langages de programmation orientés objet. ORM encapsule les détails d'implémentation spécifiques des pilotes de stockage dans une API (interface de programme d'application) et mappe les champs relationnels sur un membre d'objet. Par exemple, si j'ai une table d'employés, celle-ci est mappée sur un seul objet pour tous les employés, avec différentes méthodes qui y sont associées.

ODM, d’autre part, est un Object Document Mapper, qui mappe des objets avec une base de données de documents telle que MongoDB.

La principale différence est que ORM est destiné aux bases de données MySQL, tandis qu'ODM effectue le mappage pour la représentation des données par document. La meilleure façon de se rappeler ce que fait ORM serait de le considérer comme une feuille de calcul Excel, avec des lignes et des colonnes. Lorsque vous utilisez cette configuration, vous voulez être sûr d'avoir un bon plan pour la manière dont vous voulez vous attaquer à l'application actuelle. Cela n'autorise pas autant de modifications que l'ODM. Avec ODM, nous pouvons ajouter facilement de nouveaux champs et propriétés, mais avec ORM lors de l’ajout d’un nouveau champ, vous devez garder à l’esprit que rien ne reste vide et qu’une valeur doit être définie comme valeur par défaut, à moins que vous ne souhaitiez entrer dans chacun d’eux et le modifier.

0
sajjad jafari bojd

Mongoose est un bon exemple d'ODM (Object Data Model) pour MongoDB dans lequel vous pouvez effectuer directement des opérations avec des objets et qui est traduit dans la requête et le schéma appropriés . Vous pouvez le trouver à l'adresse suivante: https: // mongoosejs. .com/

0
Arjun Agarwal