Pregunta

Dado que no hay aren repositorios de objetos de valor. ¿Cómo puedo cargar todos los objetos de valor?

Supongamos que estamos modelando una aplicación de blog y tenemos estas clases:

  • Post (Entidad)
  • Comentarios (Objeto de valor)
  • Tag (Objeto de valor)
  • PostsRespository (Repositorio)

Yo sé que al guardar una nueva entrada, sus etiquetas se guardan con él en la misma tabla. Pero ¿cómo podría cargar todas las etiquetas de todos los mensajes. En caso de PostsRespository tener un método para cargar todas las etiquetas? Usualmente lo hago, pero me gustaría saber las opiniones de otros

¿Fue útil?

Solución

Estoy buscando una mejor solución para esta pregunta y me encontré con este post:

http: // Gojko .net / 2009/09/30 / DDD-y-relacionales-bases de datos, el valor-objeto-dilema /

Este post explica muy bien por qué existe mucha confusión con objetos de valor y bases de datos. Aquí está la frase que me gusta mucho:

  • " La persistencia no es una excusa para convertir todo a las entidades. "

Gojko Adzic, nos dan tres alternativas para salvar nuestros objetos de valor.

Otros consejos

Actualmente estoy trabajando a través de un ejemplo similar. Una vez que necesita hacer referencia únicamente a las etiquetas que no son ya largo objetos de valor simple y pueden seguir creciendo en complejidad. Decidí hacerlos sus propias entidades y crear un repositorio separado para recuperarlos. En la mayoría de escenarios que se cargan o guardan con el puesto, pero cuando se requieren solo se utiliza el otro repositorio.

Espero que esto ayude.

EDIT: En parte gracias a este post he decidido reestructurar mi solicitud ligeramente. Tienes razón en que probablemente estaba haciendo incorrectamente etiquetas una entidad. ya que he cambiado mi aplicación para que las etiquetas son sólo cuerdas y el repositorio de correos maneja todos los requisitos de almacenamiento de alrededor de etiquetas. Para las operaciones que necesitan los mensajes de las etiquetas se cargan con ellos. Para cualquier operación que sólo requiere etiquetas o listas de etiquetas el repositorio tiene métodos para ello.

Aquí está mi toma en cómo podría resolver este tipo de problema en la forma en que estoy actualmente la práctica de DDD.

Si está editando algo que requiere etiquetas para ser añadidos o borrados de como un poste a continuación, las etiquetas pueden ser entidades, pero tal vez podrían ser objetos de valor y se carga y se guarda junto con el puesto de cualquier manera. Yo personalmente tiendo a favorecer a los objetos de valor a menos que el objeto necesita ser modificada, pero soy consciente de que hay una diferencia entre el objeto de entidad modelada como sólo lectura "instantáneas" y objetos de valor real que carecen de identidad. La parte difícil es que tal vez a veces lo que normalmente se piensa en como clave podría ser parte de un objeto de valor, siempre y cuando no se utiliza como identidad en ese contexto, y creo que las etiquetas entran en esta categoría.

Si está editando las propias etiquetas, entonces es probablemente un contexto acotado por separado o al menos un agregado separado en el que las etiquetas son en sí mismas son la raíz agregada y persistió a través de un repositorio. Tenga en cuenta que la clase de entidad que representa a las etiquetas en este contexto no tiene por qué ser la misma clase de entidad de precintos utilizados en Post agregado.

Si su establecimiento etiquetas disponibles en la pantalla para leer sólo con fines tales como para proporcionar una lista de selección, a continuación, que es probablemente una lista de objetos de valor. Estos objetos de valor pueden, pero no tienen que estar en el modelo de dominio, ya que son principalmente sobre el apoyo a la interfaz de usuario y no en el dominio real.

Por favor, interrumpiría si alguien tiene alguna idea de por qué mi opinión sobre esto podría estar equivocado, pero esta es la forma en que he estado haciendo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top