Primero que nada, probablemente no haya una respuesta correcta, pero estoy seguro de que hay personas que saben más que yo y que podrán ayudar.DDD - ¿Repositorio por entidad o uno para todo?
Tengo 3 entidades: Usuario, Blog, Publicación.
El sistema puede tener cualquier cantidad de usuarios.
El usuario puede tener cualquier número de blogs, pero cada blog tiene solo un usuario.
El blog puede tener tantas publicaciones como el usuario publique, y todas las publicaciones serán del mismo usuario que posee el blog (es decir, si John posee blog Food, solo John puede publicar en este blog). Y, por supuesto, cada publicación tiene un blog para padres.
Luego tengo la página del perfil del usuario, donde quiero mostrar todos los detalles del usuario, nombres de todos sus blogs y las últimas 5 publicaciones.
Tengo una página de blog que muestra los detalles del blog, el nombre del propietario (Usuario) y los títulos de todas las publicaciones.
Luego tengo una página de publicación que muestra los detalles de la publicación, el nombre del blog y el nombre del propietario.
Como ve, tengo relaciones entre todos ellos, pero ninguno de ellos puede actuar como agregado.
No es tan difícil definir las entidades en el código, con lo que sí tengo problemas es definiendo los repositorios. ¿Cuánto necesito? 3 - uno por cada entidad? 1 - para todo? ¿Cómo realizo búsquedas?
Por ejemplo, para obtener las 5 últimas publicaciones en la página de usuario. El usuario no tiene referencia a Publicaciones, sino que contiene un contenedor de Blogs donde cada Blog contiene un contenedor de Publicaciones. ¿Debo tener un método en mi repositorio que acepte el ID de usuario y devuelva una lista de Publicaciones? O tal vez debería ser un servicio? Además, generalmente no realizo la carga de todos los datos, sino que tengo la carga lenta. Al recuperar una entidad de Usuario existente, no cargaría sus blogs a menos que sean necesarios (cuando se accede por primera vez).
Gracias de antemano.
¿Qué quiere decir exactamente por 'repositorio' vs. 'servicio'? OMI esta pregunta es demasiado amplia para SO. – home
Puede encontrar las definiciones aquí http://en.wikipedia.org/wiki/Domain-driven_design Y sí, tuve un poco de miedo de que la pregunta fuera demasiado amplia para SO ... –