advanced

Entity manager

Используйте entity manager как scoped persistence gateway для find, persist, flush и transaction orchestration.

Entity manager — scoped-шлюз для `find`, `persist`, `remove`, `flush` и транзакций. В MikroORM связан с identity map и контекстом запроса — fork на каждый запрос в web.

					const em = orm.em.fork();
await em.transactional(async (tx) => {
  const user = await tx.findOne(User, { id });
  tx.assign(user, { name: 'Ada' });
});
				

На интервью: forked EM, `RequestContext`, транзакции, repository как тонкие помощники, запрет reuse между запросами.

Типовые ошибки: глобальный manager смешивает identity map пользователей; вызовы repository вне активного transaction fork.

Компромисс — эргономичный persistence API против строгой изоляции на запрос.

Чеклист:

  • Fork или scope на запрос.
  • Транзакции через manager.
  • Тонкие явные repository.
  • Передавайте transactional EM в сервисы.