
Что будет, если убрать из ORM предположение «одна таблица — одна entity»?
DenisYu-1 1 минуту назад Что будет, если убрать из ORM предположение «одна таблица — одна entity»? Средний 10 мин 0 PHP * Doctrine ORM * Symfony * Мнение Из песочницы Большинство ORM строятся вокруг естественного...
<5 — 2026'da uzaya kaç SpaceX Starship fırlatması ulaşacak?
В сфере искусственного интеллекта произошло заметное событие. DenisYu-1 1 минуту назад Что будет, если убрать из ORM предположение «одна таблица — одна entity»? Средний 10 мин 0 PHP * Doctrine ORM * Symfony * Мнение Из песочницы Большинство ORM строятся вокруг естественного предположения: одной таблице соответствует одна entity. Это настолько привычно, что даже не обращаешь внимания.
Это не правило, но вокруг него проектируются почти все остальные механизмы: метаданные принадлежат классу, Unit of Work отслеживает экземпляры этого класса, миграции собираются из его описания, а объектная модель постепенно начинает повторять структуру базы данных. При этом часто в коде не требуются все поля сразу. Конкретный процесс использует только то, что требуется, и ни читать, ни менять эти поля в других процессах не надо.
Технические детали
В статье сперва посмотрим на два подхода работы с сущностями, а потом что получилось, когда я попробовал сделать по‑другому. Проект «Теремок»Модель пользователя как точка сосредоточения функционалаВ уездном городе П молодой разработчик Виктор Протагонистов устроился в маленькую, но амбициозную компанию, делающую маленький, но амбициозный проект. Проект был успешен, функционал рос и углублялся.
Сначала у пользователя были логин, пароль и профиль. Потом добавились телефоны, адреса, реферальная механика и много чего ещё. Код был грамотно разнесён по модулям и по показателям coupling и cohesion всё было вполне себе в зелёной зоне.
Папка с сущностями в подобных метриках тянула всех вниз, поэтому добавили в игнор, «обозвав» инфраструктурой. При этом добавляя поле для своей задачи, Виктор с удивлением мог обнаружить, что параллельно сущность обзавелась ещё несколькими полями или даже связями. Не всегда можно было определить по названию, зачем конкретно нужно то или иное поле.
Отраслевые последствия
В какой‑то момент класс выглядел так:# class User { public int $id; public string $email; public string $password; public ? string $name; public ? string $avatarUrl; public ?
string $stripeCustomerId; public ? int $addressId; public ? int $defaultAddressId; public ?
string $utmSource; public ? string $referralCode; public ? DateTime $lastSeenAt; public bool $isBetaTester; // @deprecated public bool $isOnboarded; public ?
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.





