TypeORM Repository

NestJS 🟡 Mid

Définition

Pattern d'accès aux données qui fournit des méthodes CRUD (find, save, delete) pour une entité. Injecte via @InjectRepository dans les services.

Analogie

Comme un bibliothécaire spécialisé : il sait exactement comment chercher, ranger et prêter les livres de sa section.

Exemple de code

@Injectable()
export class UserService {
  constructor(
    @InjectRepository(User)
    private repo: Repository<User>,
  ) {}

  findAll() { return this.repo.find(); }
}

Cas d'usage

Effectuer les opérations CRUD sur les entités sans écrire de SQL brut.

Anti-pattern

Utiliser le repository directement dans le controller au lieu de passer par un service.
#database#interview

En entretien

  1. C'est quoi le rôle du Repository dans TypeORM, et comment on l'injecte ?

    Le repository fournit les méthodes CRUD (find, save, delete) pour une entité donnée, et on l'injecte dans un service avec @InjectRepository(User) sur un Repository<User>. Ça évite d'écrire du SQL brut pour les opérations courantes.

  2. Pourquoi c'est un problème d'utiliser le repository directement dans le controller ?

    Ça court-circuite le service qui doit porter la logique métier, comme si on allait directement voir le bibliothécaire sans passer par la réception. Ça rend le code plus dur à tester et mélange responsabilités HTTP et accès aux données.

  3. Quand est-ce que tu éviterais d'utiliser le Repository standard ?

    Quand j'ai besoin de requêtes complexes avec jointures ou filtres dynamiques, je passe plutôt par le QueryBuilder qui offre une API plus fine que les méthodes CRUD basiques.

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre