DDD - Комплексно картографиране на ORM

Пиша Java DDD приложение, в което моделът на базата данни вече е проектиран и внедрен. Проблемът е, че моите обекти на домейн се различават от модела на базата данни и картографирането на ORM е твърде сложно. Ето въпроса: Какво мога да направя с това? DTO? Как мога да свържа DTO с хранилища и обекти на домейн, ако те виждат интерфейсите на хранилищата?

Благодаря!


person Lucas    schedule 26.08.2011    source източник
comment
Не съм сигурен как DTO ще помогнат в този случай. Можете ли да дадете някои примери за картографирането, с което се затруднявате? Може да се изненадате колко различни можете да направите схемата на базата данни и модела на домейна. Може би трябва да препроектирате домейна, за да пасне на базата данни (не по обичайния начин, знам, но понякога е необходимо).   -  person Paul T Davies    schedule 30.08.2011
comment
Е, аз съм изправен пред същия проблем и несъществуващият ORM (като HIbernate) може да картографира моите обекти на домейна към съществуващ наследен дизайн на база данни. Запазването на всеки формуляр води до вмъкване в множество таблици и актуализиране на някои полета на някои други таблици.   -  person Amir Pashazadeh    schedule 10.12.2017


Отговори (2)


Hibernate има много добра поддръжка за наследени бази данни. Той отива далеч отвъд картографирането на class=table. Сложността, за която говорите, няма да изчезне, ако използвате допълнителен DTO слой, той просто ще бъде разпределен върху още един слой. Може да е по-лесно просто да го съдържате във файлове за картографиране. Може да има смисъл да промените малко модела към схемата на базата данни, но само ако ще видите значителни ползи по отношение на намаляването на общата сложност. И след това преработете модела на домейн по-късно, заедно с база данни.

person Dmitry    schedule 31.08.2011

Много ORM липсват в прилагането на достатъчно добри възможности за картографиране. Освен това те въвеждат концептуални преки пътища, които могат да попречат на решението да се приведе в съответствие с бизнеса. Вашият случай е добър пример.

Във вашия случай вероятно бих оспорил използването на ORM. Бих внедрил бизнес модела, без да се опитвам да използвам повторно съществуващия модел на база данни, с POCO, услуги за домейни... За постоянство, предвид факта, че имате 2 разграничаващи се модела, бих управлявал кода с инжектиране на зависимост на модела на домейн в Слой за достъп до данни, за да попреча на модела на съхранение да замърси вашия домейн и след това в DAL да внедря мое собствено картографиране с процедурен код и микро-ORM (или ORM, ако моделът на съхранение е сложен). Това представлява повече работа, но ще получите много по-добър домейн.

person Rénald    schedule 10.10.2015