5

De acuerdo con DDD (Blue book, Evans), una fábrica tiene la responsabilidad de crear una raíz agregada en un estado válido. ¿Significa esto que debería ser capaz de crear la identificación técnica (objectId en el mundo de mongoDB) así como también la ID del dominio?DDD y MongoDB: ¿Está bien dejar que Mongo cree ObjectIDs?

Por un lado, esto parece un detalle técnico y parecería correcto dejar que Mongo maneje la creación del ID.

Por otro lado, permitir consultar por id (al tener getById en un repositorio DDD) expone la identificación técnica al dominio, que a su vez sería responsabilidad de la fábrica crearla.

Tal vez no entiendo bien los diferentes casos de uso/solapamiento, etc. de IDs Técnicas frente a DomainId's o tal vez estoy exagerando, pero agradecería su opinión de todos modos.

En resumen: En DDD: ¿Debería una fábrica poder crear el Id técnico así como el Id del dominio?

posible implementación: Hi/Lo (How to set the hilo sequence starting value in MongoDB Norm?)

EDIT: aunque el/forma hi lo expone a la fábrica a la capa de persistencia, que es algo que sólo el repositorio debe saber. hmmm

Gracias

+0

Comentario no del todo relevante; MongoDB en realidad no crea los ID, el cliente (controlador) sí (a excepción de las operaciones de inserción). –

Respuesta

3

fábricas no tienen que preocuparse por la identificación porque la validez de un agregado es ortogonal a la identidad. La identidad se puede asignar de diferentes maneras, ya sea como ID incremental de una base de datos relacional en cuyo caso el repositorio debe administrarla, o como UUID/GUID, en cuyo caso puede ser asignada por la fábrica, o repositorio, o incluso el cliente que llama es conveniente porque el cliente tiene la clave por defecto.

Siempre que sea posible, trato de mantener una sola identidad para los agregados. No estoy seguro de si MongoDB requiere una ID técnica adicional, pero si lo hace y la ID de dominio no se puede usar en su lugar, entonces MongoDB debe administrarla por sí misma y detrás de las escenas.

+0

'la validez de un agregado es ortogonal a la identidad.'. Seguramente, en algunos casos, un agregado debe tener una identidad antes de que pueda llamarse válido. –

+0

Pero, de hecho, solo una identidad de dominio (que debe establecerse en el derecho de fábrica?) Y no en una Identificación técnica. Todavía no entiendo por qué es preferible (aunque no obligatorio) tener una Identificación técnica por separado en mongodb, pero supongo que esa es una pregunta completamente diferente –

+0

Un valor de identidad asignado puede indicar que un agregado es persistente, pero la validez es diferente . Ciertamente veo la relación, solo creo que la identidad recibe un tratamiento especial en este sentido ... – eulerfx

Cuestiones relacionadas