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.