Репозитории, картографы и как загружать объекты и их отношения

Я использую C++ (с библиотекой Qt), чтобы создать простое приложение, смоделированное в предметной области. Я пишу свои собственные классы сопоставления O/R. Поскольку это приложение будет расти в будущем, я стараюсь поддерживать чистую кодовую базу с четко разделенными слоями.

Проблема, с которой я сталкиваюсь, заключается в том, когда и где загружать совокупные корни, на которые ссылается объект в другом модуле. (Здесь я использую термин «модуль» Эрика Эванса из книги DDD.)

В настоящее время у меня есть простой объект с именем Client, который находится в модуле ClientModule. В PermitModule у меня есть объект Permit. (на самом деле все сложнее, но для краткости я остановлюсь на этих двух объектах, так как они являются совокупными корнями) Объект Permit имеет ссылку на Client как applicant. Это моя модель домена.

Снизу вверх у меня есть Уровень инфраструктуры, который содержит классы сопоставления O/R и конкретные реализации Repository объектов. Таким образом, у меня были бы здесь классы ClientMapper, ClientRepositoryDb, PermitMapper и PermitRepositoryDb.

Далее следует уровень предметной области, который содержит модель предметной области (классы Client и Permit), а также интерфейсы репозитория ClientRepository и PermitRepository.

Выше у меня есть Прикладной уровень, а затем Презентационный уровень, но в данном примере это не имеет значения.

Мой вопрос заключается в том, должны ли отношения между Permit и Client загружаться в класс PermitMapper или в класс PermitRepository. Или есть другой способ сделать это?

Это касается не только загрузки объектов, но и их сохранения и удаления.


person darkadept    schedule 12.02.2010    source источник
comment
Привет! В настоящее время я сталкиваюсь с точно такой же проблемой. Как в итоге выглядел ваш подход и что именно вы делали? Как ваш домен-объект получает данные?   -  person Stefan Falk    schedule 24.08.2016


Ответы (1)


Я выбрал подход, при котором мои классы Mapper загружаются полностью.

Я не разработчик Java, но мне интересно, как это делает Hibernate (и др.)?

person darkadept    schedule 25.02.2010