He estado estudiando DDD durante las últimas 2 semanas, y una de las cosas que realmente me llamó la atención es cómo las raíces agregadas pueden contener otras raíces agregadas. Las raíces agregadas se recuperan del repositorio, pero si una raíz contiene otra raíz, ¿tiene el repositorio una referencia al otro repositorio y le pide que cree la subroca?DDD: obtención de raíces agregadas para otros agregados
Respuesta
De mi opinión depende - Tengo el mismo escenario y la forma en que trato esto es a través del ORM que estoy usando - nHibernate.
Tengo asignaciones para todas mis entidades de las cuales varias son raíces agregadas y una de estas tiene varias otras raíces agregadas como variables miembro. El repositorio para esta raíz agregada compuesta no requiere referencias a otros repositorios raíz agregados porque nHibernate sabe cómo obtener todos los datos necesarios (a través de las asignaciones).
HTH
AWC
El repositorio no construye, sino que almacena. Cuando usa ddd, es posible que desee familiarizarse con los patrones de persistencia básicos, como unidad de trabajo, mapa de identidad, carga diferida, correlacionador de relaciones de objeto, objeto de consulta, proxy (dinámico). (Estos patrones no tienen nada que ver con ddd, pero son muy útiles para saber). El repositorio es solo una fachada para ocultar la implementación de los patrones mencionados anteriormente y para abstraer el acceso a los datos de una manera controlada por el dominio. La mayoría de las personas no escribe manualmente su infraestructura de persistencia de forma manual hoy en día, especialmente cuando usa ddd, es posible que desee ver un orm.
La referencia real con el código que convierte los registros de la base de datos en un objeto estará en el mapeador de datos. Habrá referencias entre clases de mapeo en las clases de mapeo, o creadas por algo así como mapperfactory.
public interface IDataMapper<T>
{
T Map(IDataReader reader);
}
Usted no tiene que implementar este código usted mismo, sólo tiene que utilizar una herramienta que lo hace por usted y tratar de comprender cómo las partes del código en la herramienta (ORM) trabaja. El ddd puro sin orm es casi imposible sin un buen conjunto de herramientas que le evite escribir mucho código.
@Paco: Estás equivocado. Los repositorios no son solo para almacenar objetos. Si ha leído el libro DDD de Eric Evan, sabría que los repositorios son como una representación de datos en memoria orientada a objetos. Puede usar un objeto de repositorio de la misma manera que usa una colección. Puede usar el indexador para obtener o establecer objetos, puede usar el método Add() para agregar un nuevo objeto, puede usar el método Remove() para eliminar un objeto, etc.
El repositorio usa la infraestructura para leer/escribir datos desde/hacia la base de datos. Puede usar un DataMapper para simplificar la recuperación de datos de su base de datos relacional y la asignación a sus Entidades.
- 1. DDD: Agregue raíces
- 2. DDD/Agregados en .NET
- 3. ¿Deben modelarse los valores de búsqueda como raíces agregadas?
- 4. Agregado Raíz hace referencia a otras raíces agregadas
- 5. DDD - Agregar raíces y crear objetos de comportamiento
- 6. ¿Cómo identificar las raíces agregadas en el modelo de dominio?
- 7. Tratando con agregados anidados en DDD
- 8. Raíces agregadas. ¿Qué tan lejos está el agujero del conejo?
- 9. ¿Cómo se manejan las asociaciones entre los agregados en DDD?
- 10. Conciencia del repositorio DDD de otros repositorios
- 11. Agregados de DDD frente a la fachada de GoF
- 12. ¿Se me permite tener agregados "incompletos" en DDD?
- 13. ¿Debo usar repositorios raíz agregados DDD con EF 4.1 + LINQ?
- 14. MySQL: obtención de filas agregadas la última hora
- 15. Comunicación entre agregados en CQRS + DDD + Event Sourcing
- 16. Pros y contras de DDD Repositorios
- 17. DDD: pregunta de raíz agregada
- 18. Diseño impulsado por el dominio - Agregar raíces
- 19. ¿Cómo debo implementar mi repositorio (DDD) en C# para manejar múltiples llamadas para la misma raíz agregada?
- 20. ¿Cómo implementar operadores de igualdad C++ (in) para estructuras agregadas?
- 21. Relaciones muchas-a-muchas en DDD
- 22. Excepciones agregadas
- 23. Encontrar raíces de poder enteras
- 24. DDD
- 25. Simplificar raíces cuadradas algebraicamente
- 26. ¿Dónde pertenecen todas las operaciones "a granel" en DDD?
- 27. precisión arbitraria de raíces cuadradas
- 28. raíces cuadradas Unidad de fallos
- 29. ¿Cómo realiza Apache Cassandra las operaciones agregadas?
- 30. HttpClient - tratar las excepciones agregados
¿Es un diseño controlado por el dominio? ¿Miraste el patrón de diseño compuesto? – philant