Unit of Work

Architecture 🔴 Senior

Définition

Maintient une liste d'objets modifies pendant une transaction et coordonne l'écriture des changements en une seule opération atomique.

Analogie

Un panier d'achat : tu ajoutes/supprimes des articles, et tout est valide en une seule fois au passage en caisse.

Exemple de code

class UnitOfWork {
  #changes = [];
  track(entity) { this.#changes.push(entity); }
  async commit() {
    await db.transaction(tx => this.#changes.forEach(e => tx.save(e)));
  }
}

Cas d'usage

Sauvegarder plusieurs entités modifiées en une transaction atomique (ORM comme EF Core).

Anti-pattern

Sauvegarder chaque entité individuellement sans transactionnalite.

Termes liés

#architecture#interview#ddd

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