Хранилища, съпоставители и как да зареждате обекти и техните връзки

Използвам 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 (et al)?

person darkadept    schedule 25.02.2010