intermediate
Repositories
Используйте repositories для aggregate persistence operations, избегая service layers, которые становятся thin ORM wrappers.
Repository TypeORM даёт CRUD и кастомные запросы для сущности. Удобно для простой персистентности, но сервисам нужны ясные границы — не каждый запрос в generic base repository.
const repo = manager.getRepository(Order);
await repo.find({ where: { status: 'open' }, relations: ['customer'] });
На интервью: кастомные методы repository, `EntityManager` в транзакциях, когда лучше query builder.
Типовые ошибки: глобальный repository внутри транзакции в обход transactional manager; generic-обёртки без политики.
Компромисс — быстрый CRUD против корректного доступа в транзакции.
Чеклист:
- Transaction-scoped managers.
- Запросы под use case.
- Без generic без политики.
- Query builder для сложного SQL.