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 в границах бизнес-операции.