Debería la capa del repositorio devolver objetos de transferencia de datos (DTO)?

Tengo una capa de repositorio responsable de mi acceso a datos, que es llamada por una capa de servicio. La capa de servicio devuelve DTO que se serializan y se envían por cable. La mayoría de las veces, los servicios hacen poco más que acceder a un repositorio y devolver lo que devuelva el repositorio.

Pero para que eso funcione, el repositorio debe devolver una instancia de ese DTO. De lo contrario, primero tendría que asignar el objeto de capa de datos que el repositorio devuelve a un DTO en la capa de servicio y devolverlo. Eso parece un desperdicio.

Además de eso, si la creación de los DTO ocurre en la capa de servicio, algo que podría haberse hecho antes en una llamada de repositorio y, por lo tanto, en una consulta de base de datos, ahora tiene que suceder con múltiples llamadas de repositorio en la capa de servicio para 'componer' El DTO final. A menos que, por supuesto, cree un objeto de transporte entre los datos y la capa de servicio que pueda contener dicho objeto compuesto. Cuallueg debe asignarse a un DTO. Simplemente parece un desperdicio por el bien de la pureza. Pero también se siente mal que la capa del repositorio devuelva objetos que solo existen para ser enviados por cable.

Respuestas a la pregunta(1)

Su respuesta a la pregunta