5

DDD (Blue book, Evans)에 따르면 공장은 유효한 상태의 집계 루트를 만드는 책임이 있습니다. 이것은 기술적 ID (mongoDB 세계의 objectId)와 도메인 ID를 생성 할 수 있어야한다는 것을 의미합니까?DDD와 MongoDB : Mongo가 ObjectID를 만들도록해도 괜찮습니까?

한편으로 이것은 기술적 인 세부 사항처럼 보이며 Mongo가 ID 생성을 처리하도록하는 것이 좋습니다.

다른 방법으로 ID로 쿼리를 활성화하면 (DDD 저장소에 getById이 있음) 도메인에 기술 ID가 노출되어 도메인을 생성하므로 도메인을 생성해야합니다.

아마도 Technical Id 's 대 DomainId의 다른 유스 케이스/겹침 등에서 머리를 터지거나 어쩌면 지나치게 열정적이지는 않겠지 만, 어쨌든 당신의 의견에 감사드립니다.

요약하면 : DDD에서 : 공장에서 기술 ID와 도메인 ID를 생성 할 수 있습니까?

가능한 구현 : 하이/로우 (How to set the hilo sequence starting value in MongoDB Norm?)

편집 : 하이/소호 방법 만 저장소 알아야 뭔가 영속 계층에 공장을 노출하지만. 흠

감사합니다

+0

미성년자와 전혀 관련이없는 의견. MongoDB는 실제로 ID를 생성하지 않으며, 클라이언트 (드라이버)는 (upsert 연산을 제외하고) ID를 생성합니다. –

답변

3

공장은 집합의 유효성 신원 직교 때문에 ID로 염려 할 필요가 없습니다. ID는 관계형 데이터베이스의 증분 ID (저장소를 관리해야하는 경우) 또는 UUID/GUID (공장 또는 저장소에서 할당 할 수있는 경우) 중 하나로 여러 가지 방법으로 할당 할 수 있습니다. 클라이언트가 기본적으로 키를 가지고 있기 때문에 편리한 호출 클라이언트입니다.

가능할 때마다 집계에 대한 단일 ID를 유지하려고합니다. MongoDB가 추가적인 기술 ID를 필요로하는지 확신 할 수 없지만 도메인 ID를 대신 사용할 수 없다면 MongoDB는 자체적으로 그리고 뒤에서 관리해야합니다.

+0

'집합체의 유효성은 신원과 직교합니다.' 확실하게 집계가 유효한 것으로 확인되기 전에 집계에 ID가 있어야하는 경우가 있습니까? –

+0

실제로 도메인 ID (공장에서 올바르게 설정해야합니까?)는 기술 ID가 아니며 아직도 mongodb에서 별도의 기술 ID를 갖는 것이 바람직하지는 않지만 (비록 필요하지 않지만) 완전히 다른 질문이라고 생각할 수 있습니다. –

+0

할당 된 ID 값은 집계가 지속적이지만 다른 것은 유효 함을 나타낼 수 있습니다. . 나는 확실히 관계를 보았고, 나는 정체성이이 점에서 특별한 대우를 받았다고 생각합니다 ... – eulerfx