Дискуссия вокруг анемичных и богатых моделей данных часто упирается в инфраструктурные ограничения. Согласно Мартину Фаулеру, анемичная модель является антипаттерном, однако на практике использование ORM часто приводит к созданию «раздутых» объектов. Когда одна сущность привязана к целой таблице базы данных, она неизбежно обрастает методами из разных контекстов, превращаясь в God Object.
Разработчики часто выбирают анемичную модель как защитную реакцию, чтобы избежать избыточной сложности. Альтернативные подходы, такие как разделение таблиц по контекстам, требуют значительных затрат на синхронизацию и инфраструктуру. В результате многие команды изначально проектируют сущности как простые наборы геттеров и сеттеров, что считается компромиссным решением.
Библиотека Articulate предлагает решение, позволяющее создавать несколько сущностей для одной таблицы базы данных. Это дает возможность формировать узкие «срезы» данных под конкретные задачи, например, CartOrder или BackofficeOrder. Каждая такая модель содержит только те данные и методы, которые необходимы для выполнения конкретного функционала, не перегружая объект лишней логикой.
Такой подход позволяет соблюдать принцип размещения поведения рядом с данными, не прибегая к сложной архитектуре. Поскольку все представления работают с одной строкой в рамках одной транзакции, отпадает необходимость в кросс-контекстной синхронизации. Это дает возможность создавать богатые модели, размер которых соответствует текущей задаче, а не всей структуре базы данных.






