Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

ADR-008 - Prisma comme ORM

  • Statut : Accepté
  • Date : 2026-04-05

Contexte

Le projet nécessite un accès base de données simple, typé et rapide à mettre en œuvre. Le schéma est centralisé dans packages/db et partagé entre le serveur et les packages internes. L’équipe veut éviter d’écrire du SQL brut tout en maintenant un contrôle sur les migrations.

Décision

Nous utilisons Prisma comme ORM, avec l’adaptateur @prisma/adapter-pg pour la connexion PostgreSQL et la génération de types ESM compatible Bun.

Alternatives considérées

  • TypeORM : mature, décorateurs TypeScript, mais configuration complexe et compatibilité Bun incertaine
  • Drizzle ORM : très léger, performant, SQL-like, bonne compatibilité Bun — alternative sérieuse mais adoption moins répandue dans l’équipe
  • Kysely : query builder typé, contrôle total sur le SQL, mais plus verbeux et sans gestion de migrations intégrée
  • Requêtes SQL brutes : contrôle maximal, mais perte du typage automatique et maintenance plus lourde

Conséquences

  • Schéma lisible et déclaratif dans les fichiers .prisma
  • Types TypeScript auto-générés à partir du schéma (zéro dérive entre base et code)
  • Migrations versionnées via prisma migrate pour la production
  • Prisma Studio pour explorer et modifier les données en développement
  • Abstraction qui peut limiter certaines optimisations SQL avancées (requêtes complexes nécessitent $queryRaw)
  • Génération du client requise après chaque modification de schéma (bun db:generate)
  • Performances légèrement inférieures à un query builder bas niveau pour des requêtes massives
  • Le fichier de schéma multi-fichiers (schema.prisma + auth.prisma) nécessite Prisma >= 6