Unit of Work
Architecture 🔴 SeniorDefinition
Maintient une liste d'objets modifies pendant une transaction et coordonne l'ecriture des changements en une seule operation 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 entites modifiees en une transaction atomique (ORM comme EF Core).
Anti-pattern
Sauvegarder chaque entite individuellement sans transactionnalite.