2010-11-10 2 views
2

Я нашел следующее в article: «Классы DAO никогда не должны вызываться непосредственно от клиента (Сервисы и другие потребительские классы). Клиенты всегда должны вызывать объекты домена, которые в свою очередь должны вызывать DAO для сохранения данных на хранилище данных. ".Использует DAO в объектах домена правильно?

Это не то, как я видел дела, сделанные ранее, когда делаю DDD. Любые мысли по этому поводу?

Благодаря

ответ

1

Это последнее предложение вы процитировали из статьи могло быть написано более четко. Я подозреваю, что автор имел ввиду (курсив мой добавлен текст):

клиенты должны всегда вызывать домен объекты , которые должны вызывать репозиторием, который в свою очередь, должны вызвать DAO для сохраняющихся данных в хранилище данных.

+0

Тем не менее, я всегда думал, что POJO не должны иметь никаких ссылок на репозитории? –

+0

Это намерение шаблона репозитория. Когда объект домена хочет сотрудничать с другим объектом домена, он запрашивает репозиторий для этого объекта. –

+0

Итак, я должен поместить методы поиска и отчета (например, getChildrenByABC (A a, B b, C c) в объекты домена?) Что касается pagination (getChildren (int offset, int count)) - вы бы поместили все объекты домена? –

1

«классы DAO никогда не следует называть непосредственно от клиента (Услуги и других классов потребителей). Клиенты должны всегда вызывать домен объекты , которые в свою очередь должны вызвать DAO-х для сохраняющихся данные к данным магазин. "

Нет, я думаю, что это совершенно неправильно.

Объекты домена, вероятно, также не должны ссылаться на репозитории.

Если объект домена должен взаимодействовать с другими объектами домена, он может создавать события домена или принимать другие объекты домена в качестве параметров для методов (в этом случае клиент/вызывающий абонент получает все необходимые объекты домена через репозитории).

Смежные вопросы