Introduction
Cartographie objet-relationnelle (ORM) est une technique qui permet d'interroger et de manipuler les données d'une base de données en utilisant un paradigme orienté objet. Lorsque l'on parle d'ORM, la plupart des gens se réfèrent à un bibliothèque qui met en œuvre la technique du mapping objet-relationnel, d'où l'expression "un ORM".
Une bibliothèque ORM est une bibliothèque tout à fait ordinaire, écrite dans le langage de votre choix, qui encapsule le code nécessaire pour manipuler les données, de sorte que vous n'utilisez plus SQL ; vous interagissez directement avec un objet dans le même langage que celui que vous utilisez.
Par exemple, voici un cas totalement imaginaire avec une pseudo-langue :
Vous avez une classe de livres, vous voulez retrouver tous les livres dont l'auteur est "Linus". Manuellement, vous feriez quelque chose comme ça :
book_list = new List();
sql = "SELECT book FROM library WHERE author = 'Linus'";
data = query(sql); // I over simplify ...
while (row = data.next())
{
book = new Book();
book.setAuthor(row.get('author');
book_list.add(book);
}
Avec une bibliothèque ORM, cela ressemblerait à ceci :
book_list = BookTable.query(author="Linus");
La partie mécanique est prise en charge automatiquement par la bibliothèque ORM.
Avantages et inconvénients
L'utilisation de l'ORM permet de gagner beaucoup de temps car :
-
SEC : Vous écrivez votre modèle de données à un seul endroit et il est plus facile de mettre à jour, de maintenir et de réutiliser le code.
- Beaucoup de choses sont faites automatiquement, de la gestion de la base de données à l'utilisation de l'ordinateur. I18N .
- Il vous oblige à écrire MVC ce qui, en fin de compte, rend votre code un peu plus propre.
- Vous n'avez pas besoin d'écrire un langage SQL mal formé (la plupart des programmeurs Web sont vraiment nuls dans ce domaine, car le langage SQL est traité comme un "sous" langage, alors qu'il s'agit en réalité d'un langage très puissant et très complexe).
- L'assainissement, l'utilisation d'états ou de transactions préparés sont aussi simples que l'appel d'une méthode.
L'utilisation d'une bibliothèque ORM est plus souple car :
- Il s'inscrit dans votre façon naturelle de coder (c'est votre langue !).
- Il fait abstraction du système de base de données, de sorte que vous pouvez le modifier quand vous le souhaitez.
- Le modèle est faiblement lié au reste de l'application, de sorte que vous pouvez le modifier ou l'utiliser ailleurs.
- Il vous permet d'utiliser les avantages de la POO, comme l'héritage de données, sans vous casser la tête.
Mais l'ORM peut s'avérer pénible :
- Il faut l'apprendre, et les bibliothèques ORM ne sont pas des outils légers ;
- Vous devez le mettre en place. Même problème.
- Les performances sont correctes pour les requêtes habituelles, mais un maître SQL fera toujours mieux avec son propre SQL pour les grands projets.
- Il fait abstraction de la base de données. Bien que cela soit acceptable si vous savez ce qui se passe derrière la scène, c'est un piège pour les nouveaux programmeurs qui peuvent écrire des déclarations très gourmandes, comme un gros coup dans un
for
boucle.
Comment se familiariser avec l'ORM ?
Eh bien, utilisez-en un. Quelle que soit la bibliothèque ORM que vous choisissez, elles utilisent toutes les mêmes principes. Il y a beaucoup de bibliothèques ORM ici :
Si vous voulez essayer une bibliothèque ORM dans la programmation Web, vous feriez mieux d'utiliser une pile de frameworks complète comme :
-
Symfony (PHP, en utilisant Propel ou Doctrine).
-
Django (Python, utilisant un ORM interne).
N'essayez pas d'écrire votre propre ORM, à moins que vous n'essayiez d'apprendre quelque chose. Il s'agit d'un travail gigantesque, et les anciens ORM ont demandé beaucoup de temps et de travail avant de devenir fiables.