introduction
Le mappage relationnel objet (ORM) est une technique qui vous permet d'interroger et de manipuler les données d'une base de données à l'aide d'un paradigme orienté objet. Quand on parle d'ORM, la plupart des gens font référence à une bibliothèque qui implémente la technique de mappage relationnel-objet, d'où l'expression "un ORM".
Une bibliothèque ORM est une bibliothèque tout à fait ordinaire écrite dans la langue de votre choix qui encapsule le code nécessaire pour manipuler les données, donc vous n'utilisez plus SQL; vous interagissez directement avec un objet dans la même langue que vous utilisez.
Par exemple, voici un cas complètement imaginaire avec un pseudo langage:
Vous avez un cours de lecture, vous souhaitez récupérer 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 via la bibliothèque ORM.
Avantages et inconvénients
L'utilisation d'ORM fait gagner beaucoup de temps car:
- SEC : Vous écrivez votre modèle de données en un seul endroit et il est plus facile de mettre à jour, de maintenir et de réutiliser le code.
- Beaucoup de choses se font automatiquement, de la gestion de la base de données à l' I18N .
- Cela vous oblige à écrire du code MVC , ce qui rend finalement votre code un peu plus propre.
- Vous n'avez pas besoin d'écrire du SQL mal formé (la plupart des programmeurs Web sont vraiment nulles, car SQL est traité comme un "sous" langage, alors qu'en réalité c'est un langage très puissant et complexe).
- Désinfection; utiliser des relevés ou des transactions préparés est aussi simple que d'appeler une méthode.
L'utilisation d'une bibliothèque ORM est plus flexible car:
- Il s'inscrit dans votre façon naturelle de coder (c'est votre langue!).
- Il résume le système DB, vous pouvez donc le modifier quand vous le souhaitez.
- Le modèle est faiblement lié au reste de l'application, vous pouvez donc le modifier ou l'utiliser ailleurs.
- Il vous permet d'utiliser la qualité OOP comme l'héritage de données sans mal de tête.
Mais l'ORM peut être une douleur:
- Vous devez l'apprendre, et les bibliothèques ORM ne sont pas des outils légers;
- Vous devez le configurer. Même problème.
- Les performances sont bonnes pour les requêtes habituelles, mais un maître SQL fera toujours mieux avec son propre SQL pour les grands projets.
- Il résume la DB. Bien que ce soit correct 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 coup lourd dans une
for
boucle.
Comment en savoir plus sur 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 en programmation Web, vous feriez mieux d'utiliser une pile de framework entière comme:
- Symfony (PHP, utilisant Propel ou Doctrine).
- Django (Python, utilisant un ORM interne).
N'essayez pas d'écrire votre propre ORM, sauf si vous essayez d'apprendre quelque chose. Il s'agit d'un travail gigantesque, et les anciens ont pris beaucoup de temps et de travail avant de devenir fiables.