advanced

Unit of Work

Координируйте multiple repository changes в одной transactional boundary, чтобы commits, rollbacks и identity tracking были consistent.

Unit of Work отслеживает изменения нескольких repositories в одной transactional boundary, чтобы commit и rollback были согласованы. Координирует identity maps, pending inserts и domain events при commit. Важно, когда use case атомарно трогает несколько aggregates или таблиц.

На интервью: scope транзакции на HTTP request или message handler. Сравните с наивными per-repository saves и только DB transactions.

Типовые ошибки: долгоживущие units с locks; смешение read/write transactions; события до успешного commit.

Компромисс — гибкость против сложности: знайте, когда достаточно более простого пути.

Чеклист:

  • Один unit of work на request или command.
  • Commit публикует domain events после персистентности.
  • Rollback очищает pending changes и events.
  • Integration tests на атомарные multi-repository updates.