Перейти к содержимому
14 / 15

Чем плохо использовать модель ORM как доменную модель?

Модель ORM описывает, как данные разложены по таблицам, доменная модель описывает правила. Когда это один класс, правила оказываются связаны с сессией и ленивой загрузкой: обращение к атрибуту молча уходит в базу, вне сессии объект вообще перестаёт работать, а публичные сеттеры на все поля не дают защитить инвариант. Проверяемый симптом — бизнес-правило нельзя протестировать без базы. Лечится разделением: чистый доменный объект плюс репозиторий, который переводит его в строки и обратно и явно решает, какие связи загружать. Разделение стоит двух наборов классов и маппинга, поэтому на CRUD не окупается — там активная запись фреймворка честнее. Что стоит соблюдать всегда: модель ORM не отдают прямо в API, иначе схема базы становится публичным контрактом.

Чем плохо использовать модель ORM как доменную модель? | JScriptiser