Modelo de dominio y consulta

8

Soy nuevo en DDD, he trabajado solo en aplicaciones Transaction-Script con un modelo anémico, o solo en Big Balls of Mud, así que perdona cualquier terminología que abuso.

Estoy tratando de entender la separación adecuada entre el modelo de dominio y el repositorio. ¿Cuál es la forma correcta de construir un objeto de dominio que proviene de una base de datos, asumiendo la necesidad (increíblemente simplificada) de consultar los objetos por estado (devuelve enumerable ) o por ID?

  • ¿Debería una fábrica construir los objetos, exponiendo los métodos para GetByStatus() y GetByID() , usando un repositorio DIed?
  • ¿Debería llamarse directamente a un repositorio, sabiendo cómo construir un modelo de dominio desde el DTO?
  • ¿Debería el modelo de dominio tener un constructor para obtener por ID, usando un repositorio DIed para cargar el estado inicial, usando algún otro método (?) para la lista?

No estoy realmente seguro de cuál sería la mejor forma y esta pregunta tiene una respuesta que aboga por cada una de ellas (ciertamente son exclusivas de mutuallu).

    
pregunta Tyrsius 19.12.2012 - 07:51

1 respuesta

6

El repositorio es un servicio de modelo de dominio, que tiene la responsabilidad de servir como capa entre su dominio y el almacén de datos. Debe tener un método para consultar entidades y métodos para guardarlos y actualizarlos.

Para responder a su pregunta:

  • Yo diría que no. Creo que si utiliza las fábricas para crear su objeto de dominio, debería ser obvio que el objeto de dominio proviene del almacén de datos y no se crea de nuevo.
  • Sí, si quieres. Creo que esto está bastante cerca de los detalles de la implementación y se puede dejar en usted.
  • Definitivamente no. Como dije, debería ser obvio de dónde proviene la entidad.

Además, si está utilizando un marco ORM, entonces este marco ya es una forma de repositorio. Aproveche al máximo y no reinvente la rueda ni agregue una capa innecesaria de complejidad sobre ella.

    
respondido por el Euphoric 19.12.2012 - 08:01

Lea otras preguntas en las etiquetas