Если домен легкий (читай: не сложный), рекомендуется использовать простые объекты типа ActiveRecord на уровне основного домена. Обычно взаимно-однозначное сопоставление между таблицами БД и объектами вашего домена, и здесь не так уж много «логики». Ваше приложение просто перетасовывает записи между базой данных и вашим пользовательским интерфейсом и позволяет выполнять простые операции CRUD.
Для сложных доменов вы должны построить модель основного домена, в которой некоторые объекты будут отображаться в таблицы БД, а некоторые, скорее всего, не будут представлять и представлять другие концепции в вашем домене, кроме простых данных. Логика для приложения должна быть внутри объектов, когда это уместно, или внутри объектов Service, если это требует координации между несколькими объектами домена.
Анти-паттерн Anemic Domain Model применяется, когда у вас сложный домен, но вместо того, чтобы надлежащим образом помещать некоторую логику в объекты домена и некоторую логику в службы, вы помещаете ВСЕ (или почти всю) логику, внешнюю по отношению к вашему базовому домену. объекты.
Ключевое отличие здесь в том, куда вы помещаете логику. Если у вас не так много, очевидно, что доменные объекты будут выглядеть как простые контейнеры данных. Если у вас сложная логика, не просто вытаскивайте ее ВСЕ из доменных объектов, а лучше разделите ее соответствующим образом между объектами основного домена и доменными службами.