87 votes

Qu'est-ce qu'un cadre de mappage objet-relationnel?

Comme le titre l'indique; Qu'est-ce qu'un cadre ORM et à quoi sert-il?

273voto

Lasse V. Karlsen Points 148037

Une réponse simple est que vous enveloppez vos tables ou des procédures stockées dans les classes dans votre langage de programmation, de sorte qu'au lieu d'écrire des requêtes SQL pour interagir avec votre base de données, vous utilisez des méthodes et propriétés des objets.

En d'autres termes, au lieu de quelque chose comme ceci:

String sql = "SELECT ... FROM persons WHERE id = 10"
DbCommand cmd = new DbCommand(connection, sql);
Result res = cmd.Execute();
String name = res[0]["FIRST_NAME"];

vous faites quelque chose comme cela:

Person p = repository.GetPerson(10);
String name = p.FirstName;

ou de code similaire (beaucoup de variations.) Certains cadres aussi mis beaucoup de code en tant que méthodes statiques sur les classes elles-mêmes, ce qui signifie que vous pourriez faire quelque chose comme ceci à la place:

Person p = Person.Get(10);

Certains aussi de mettre en œuvre complexe des systèmes de requête, de sorte que vous pourriez faire ceci:

Person p = Person.Get(Person.Properties.Id == 10);

Le cadre est ce qui rend ce code possible.

Maintenant, les avantages. Tout d'abord, vous masquez le SQL loin de votre code de logique. Cela a l'avantage de vous permettre de plus facilement prendre en charge plusieurs moteurs de base de données. Par exemple, MS SQL Server et Oracle a des noms différents sur les fonctions typiques, et les différentes façons d'effectuer des calculs avec des dates, donc une requête pour "me faire toutes les personnes modifiés dans les dernières 24 heures" pourrait entraîner différents syntaxe SQL pour les deux moteurs de base de données. Cette différence peut être mis à l'écart à partir de votre code de logique.

En outre, vous pouvez vous concentrer sur l'écriture de la logique, au lieu de devenir le SQL droit. Le code sera généralement bien plus lisible, car il ne contient pas tous de la "tuyauterie" nécessaire de parler à la base de données.

49voto

Codebeef Points 17084

De wikipedia:

Mapping objet-relationnel (ORM, O/RM, et O/R mapping) dans le logiciel informatique est une technique de programmation pour la conversion des données entre incompatible type de systèmes de bases de données relationnelles et la programmation orientée objet les langues. Cela crée, en effet, un "objet virtuel" base de données qui peut être utilisé dans la programmation de langue. Il y a à la fois libre et logiciels commerciaux disponibles effectuer le mapping objet-relationnel, bien que certains programmeurs opter pour créer leurs propres outils ORM.

C'est bon pour l'abstraction de la banque de données (fichier plat / SQL / autre) dans le but de fournir une interface qui peut être utilisée dans votre code. Par exemple, (dans les rails) plutôt que de construire SQL pour trouver le premier utilisateur dans une table des utilisateurs, nous pourrions le faire:

User.first

Ce qui permettrait de nous retourner une instance de notre modèle d'utilisateur, avec les attributs du premier utilisateur dans la table des utilisateurs.

11voto

leafnode Points 1047

Les bases de données de l'habitude de travailler sur le modèle relationnel: vous avez des tables (en simplifiant: comme une feuille de calcul), et les relations entre eux - un-à-un, un-à-plusieurs, plusieurs-à-plusieurs, etc, qui signifie par exemple qu'un seul enregistrement dans le tableau a de nombreux enregistrements liés dans la table B. Vous pouvez récupérer des données à partir de ces lignes (une collection de valeurs représentant les lignes de la table ou des tables) Plus dans wikipedia.

Langages de programmation modernes utilisation du modèle objet. Les objets ont des méthodes, attributs (simple ou complexe), etc.

ORM logiciel ne une transition entre ces modèles. Par exemple, il met tous les enregistrements liés de la table B dans un attribut de l'objet A. Ce type de logiciel facilite l'utilisation de bases de données relationnelles (plus populaire) avec l'objet des langages de programmation.

2voto

Chris Nicol Points 4240

ORM est:

Une abstraction et, comme toute abstraction, vous facilite la vie.

0voto

chikak Points 954

De Wikipedia: http://en.wikipedia.org/wiki/Object-relational_mapping

Mapping objet-relationnel (ORM, O/RM, et de mappage O/R) dans le logiciel informatique est une technique de programmation pour la conversion de données entre incompatible type de systèmes de bases de données relationnelles et les langages de programmation orientée objet. Cela crée, en effet, un "objet virtuel" base de données qui peut être utilisé dans le langage de programmation. Il y a à la fois gratuit et les programmes commerciaux disponibles qui effectuent de mapping objet-relationnel, bien que certains programmeurs choisissent de créer leurs propres outils ORM.

Avantages et inconvénients L'ORM permet souvent de réduire la quantité de code à écrire, à rendre le logiciel plus robuste (moins le nombre de lignes de code dans un programme, le moins d'erreurs contenues dans leur sein).[1].

Il y a des coûts et des avantages pour l'utilisation de mappage O/R. Par exemple, certains O/R mapping outils ne fonctionnent pas bien pendant les suppressions en masse de données. Les procédures stockées peuvent avoir de meilleures performances, mais ne sont pas portables.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X