Introduction aux ORM
Qu'est-ce qu'un ORM/ODM, le mapping objet-relationnel, ses avantages et limites, la comparaison avec le SQL brut, et le panorama Prisma, Sequelize, TypeORM et Mongoose.
Un ORM (Object-Relational Mapper) fait le pont entre votre code orienté objet et votre base relationnelle. Un ODM (Object-Document Mapper) fait la même chose pour une base documentaire comme MongoDB.
🔗 Le mapping objet-relationnel
L'idée : une classe/objet = une table, une propriété = une colonne, une instance = une ligne.
// Sans ORM : on pense en SQL
await db.query("SELECT titre, prix FROM articles WHERE id = $1", [42])
// Avec Prisma : on pense en objets via le client généré
const article = await prisma.article.findUnique({ where: { id: 42 } })
console.log(article.titre, article.prix)Le développeur manipule des objets ; l'ORM génère le SQL (ou les appels Mongo) correspondant.
✅ Avantages
- Productivité : pas besoin d'écrire chaque requête à la main.
- Sécurité : l'ORM échappe les valeurs, réduisant les injections SQL.
- Typage : avec Prisma/TypeORM, les modèles sont typés (TypeScript).
- Portabilité : changer de base est souvent transparent.
⚠️ Limites
- Abstraction : requêtes complexes parfois moins performantes ou moins claires.
- Courbe : il faut apprendre l'API de l'ORM.
- Fuite de fuite : parfois on finit quand même par écrire du SQL natif pour les cas rares.
Règle pratique : utilisez l'ORM pour 90 % des cas courants, et du SQL natif uniquement pour les requêtes analytiques complexes.
🆚 ORM vs SQL brut
| Critère | ORM | SQL brut |
|---|---|---|
| Vitesse d'écriture | Rapide | Lente |
| Contrôle fin | Moyen | Total |
| Sécurité intégrée | Oui | À gérer soi-même |
| Performance critique | Parfois moins | Optimisable |
🗺️ Panorama des outils
- Prisma : ORM moderne, schéma déclaratif, client typé généré, migrations.
- Sequelize : ORM Node historique, mature, supporte many DBS.
- TypeORM : orienté décorateurs, proche de Hibernate (Java).
- Mongoose : ODM pour MongoDB (pas relationnel).
Pour MongoDB, on parle d'ODM (Mongoose) plutôt que d'ORM. Voir Modélisation MongoDB pour le modèle documentaire.
➡️ Suite
La page Prisma en pratique montre l'installation et un CRUD typé concret.
Quiz du chapitre
MVC & ORM
Terminez le quiz du chapitre pour le marquer comme complété.
La couche modèle
Rôle du modèle dans une architecture MVC, validation des données, distinction entre services et contrôleurs, et pourquoi ne pas écrire de SQL dans un contrôleur.
Prisma en pratique
Installation de Prisma, schéma, modèles et relations, migrations, client généré, CRUD typé et intégration dans un contrôleur Express.