Les ORM sont utiles jusqu'à ce que vous cessiez de regarder le SQL_
Les ORM peuvent accélérer le développement de produits, mais ils deviennent coûteux lorsque les équipes cessent d'inspecter les requêtes générées et de comprendre les modèles d'accès aux bases de données.
Le problème avec les ORM n'est pas qu'ils existent.
Le problème commence lorsqu'une équipe traite l'ORM comme une couche d'abstraction de base de données au lieu d'un générateur de requêtes qui doit encore être compris, mesuré et occasionnellement contourné.
Cette distinction est importante.
## Ce que les ORM savent réellement faire
Les ORM sont bons pour :
- les chemins CRUD standards
- le modélisation de schéma
- les migrations
- la réduction du code de mappage répétitif
Ils sont généralement mauvais pour cacher le modèle de coût des bases de données relationnelles.
Si une équipe ne regarde jamais le SQL, l'ORM devient un générateur de latence avec une belle saisie semi-automatique.
## Le Mode de Défaillance que Tout le Monde Finira par Voir
L'exemple classique est le problème de requête N+1 :
```ts
const users = await db.user.findMany({ take: 50 });
for (const user of users) {
console.log(user.invoices[0]?.status);
}
Au niveau de l'application, cela semble inoffensif.
Au niveau de la base de données, cela signifie souvent :
une requête pour récupérer les utilisateurs
cinquante autres requêtes pour récupérer les enregistrements associés
Ce n'est pas un bug de l'ORM. C'est le résultat d'un accès aux relations qui cache les limites des requêtes.
Le Chargement Anticipé n'est Pas une Solution Universelle
La réaction habituelle est de tout charger dès le départ :