advanced
Unit of Work
Собирайте entity changes и flush в dependency order, сохраняя transaction boundaries.
Unit of Work в MikroORM отслеживает new, managed и removed сущности, затем `flush()` отправляет упорядоченный SQL — часто в транзакции. Изменения managed-сущностей проходят dirty checking.
const order = em.create(Order, { status: 'open' });
order.status = 'paid';
await em.flush(); // INSERT или UPDATE по необходимости
На интервью: `persist`, `flush`, cascades, границы транзакции, dirty checking, явный момент flush.
Типовые ошибки: ожидание немедленного SQL при присваивании; большой flush с множеством dirty-сущностей; неожиданные cascades.
Компромисс — удобные доменные сценарии против «сюрпризов» flush.
Чеклист:
- Поведение dirty checking.
- Flush осознанно.
- Понятные cascades.
- Flush в границах бизнес-операции.