5

Zgodnie z DDD (Niebieska księga, Evans) fabryka jest odpowiedzialna za stworzenie Korzenia Agregatów w prawidłowym stanie. Czy to oznacza, że ​​powinien być w stanie utworzyć identyfikator techniczny (objectId w świecie mongoDB), a także identyfikator domeny?DDD i MongoDB: Czy można pozwolić Mongo na tworzenie identyfikatorów obiektów?

Z jednej strony wydaje się to technicznym szczegółem i wydaje się w porządku, aby Mongo obsługiwał tworzenie identyfikatora.

Z drugiej strony włączenie sprawdzania przez id (poprzez posiadanie getById w repozytorium DDD) udostępnia identyfikator techniczny do domeny, co z kolei spowodowałoby, że Fabryka będzie go tworzyć.

Być może nie mogę się zorientować na różne przypadki użycia/nakładania się, itp. Technicznego identyfikatora kontra DomainId lub może jestem nadgorliwy, ale i tak chciałbym wyrazić twoją opinię.

W skrócie: W DDD: Czy fabryka powinna być w stanie utworzyć identyfikator techniczny, a także identyfikator domeny?

możliwa realizacja: Hi/Lo (How to set the hilo sequence starting value in MongoDB Norm?)

EDIT: chociaż hi/lo sposób eksponuje fabryki do warstwy trwałości, która jest czymś tylko Repository powinien wiedzieć. hmmm

Dzięki

+0

Niewielki komentarz nie do końca odpowiedni; MongoDB w rzeczywistości nie tworzy identyfikatorów, które wykonuje klient (sterownik) (z wyjątkiem operacji upsert). –

Odpowiedz

3

Fabryki nie muszą zajmować się identyfikatorem, ponieważ ważność kruszywa jest prostopadła do tożsamości. Tożsamość można przypisać na kilka różnych sposobów, albo jako przyrostowy identyfikator z relacyjnej bazy danych, w którym to przypadku repozytorium musi nią zarządzać, albo jako identyfikator UUID/GUID, w którym to przypadku może być przypisany przez fabrykę lub repozytorium, lub nawet klient wywołujący, który jest wygodny, ponieważ wtedy klient ma domyślnie klucz.

Gdy tylko jest to możliwe, staram się zachować pojedynczą tożsamość dla agregatów. Nie jestem pewien, czy MongoDB wymaga dodatkowego identyfikatora technicznego, ale jeśli tak, a identyfikatora domeny nie można użyć w tym miejscu, MongoDB powinien nim zarządzać samodzielnie i za kulisami.

+0

"ważność agregatu jest ortogonalna do tożsamości.". Z pewnością w niektórych przypadkach agregat musi mieć tożsamość, zanim będzie można go nazwać ważnym? –

+0

Ale rzeczywiście tylko tożsamość domeny (która powinna być ustawiona w fabryce, prawda?), A nie à Technical id. Nadal nie mogę zrozumieć, dlaczego preferuje się (choć nie jest to wymagane) oddzielny identyfikator techniczny w mongodb, ale myślę, że to zupełnie inne pytanie. –

+0

Przypisana wartość tożsamości może wskazywać, że agregat jest trwały, ale ważność jest inna . Na pewno widzę związek, po prostu uważam, że tożsamość jest traktowana w szczególny sposób w tym zakresie ... – eulerfx

Powiązane problemy