Un ORM (Object-Relational Mapping) est un outil qui fait le lien entre le code orienté objet d'une application et une base de données relationnelle, pour manipuler les données comme des objets sans écrire chaque requête SQL à la main.
Concrètement, une table « clients » devient une classe Client dans le code. Pour enregistrer un client, le développeur crée un objet et l'ORM génère la requête SQL correspondante. Il gère aussi les relations entre tables, les évolutions du schéma (migrations) et protège contre certaines failles comme l'injection SQL.
Chaque écosystème a les siens :
- PHP : Doctrine (Symfony), Eloquent (Laravel)
- Java : Hibernate
- Python : SQLAlchemy, l'ORM de Django
- JavaScript / TypeScript : Prisma, TypeORM
L'ORM fait gagner beaucoup de temps, mais masque ce qui se passe en base. Mal utilisé, il génère des requêtes inefficaces, comme le problème dit « N+1 », où une simple liste déclenche des centaines de requêtes.
Pourquoi ça compte quand on recrute
Un développeur qui ne connaît la base de données qu'à travers un ORM finit tôt ou tard par créer des problèmes de performance. En entretien, demandez-lui d'expliquer la requête SQL que produit son code, ou de diagnostiquer un problème N+1. Le bon profil back-end sait utiliser l'ORM pour aller vite et passer au SQL quand c'est nécessaire.
