es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Separación de Capas de Persistencia y Dominio dentro de una aplicación de Modelo de Dominio Rico.

Hay un concepto que habla sobre la separación de la capa persistente de la capa de dominio para hacer que la capa de dominio sea más robusta: no dependería de la implementación actual del repositorio en la capa de persistencia, sino solo de la interfaz del repositorio.

Esto significa que tenemos:

IPersonRepository {...} // en la capa de dominio
PersonCassandraRepository implements IPersonRepository {...}  // en la capa de persistencia
Person (Aggregate Root) {...}

Ahora, ¿qué pasa con Person?

En models anémicos de dominio, podemos tener:

IPerson {...} // en la capa de dominio
Person implements IPerson {...} // en la capa de persistencia

¿Por qué poner a Person en la capa de persistencia?
Porque contiene código específico de implementación.
Por ejemplo, puede contener anotaciones relacionadas con JPA, y al igual que con el repositorio, no queremos tener una implementación específica del almacenamiento de datos en nuestra capa de dominio.

Podemos hacer lo anterior con un modelo anémico de dominio, porque Person no contiene ninguna lógica de dominio, lo que significa que podemos colocar a Person en la capa de persistencia.
En un modelo anémico de dominio, los datos se separan del comportamiento, por lo que el comportamiento de Person es realizado por servicios separados y no se escribe en Person mismo.

No podemos hacer esta separación de capas con un modelo rico de dominio, porque en este caso, Person contiene lógica específica del dominio.

¿Cómo realizarías esta separación de capas en una aplicación con un modelo rico de dominio?
O tal vez estás pensando que no es necesario.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    En una aplicación de modelo de dominio rico, donde la lógica del dominio se encuentra dentro de las entidades del dominio en sí, aún se puede lograr la separación entre la capa persistente y la capa de dominio. Sin embargo, esto requiere un enfoque diferente.

    Una forma de lograr esta separación es utilizar el Patrón Repositorio. La capa de dominio define la interfaz IPersonRepository, que incluye todos los métodos que el repositorio debe implementar. Esta interfaz es implementada por PersonRepository en la capa de persistencia.

    La entidad Person en sí no contiene ningún código relacionado con la persistencia o anotaciones. En su lugar, el repositorio es responsable de mapear la entidad Person a su representación persistente. De esta manera, la capa de dominio no está fuertemente acoplada a la capa de persistencia y puede mantenerse enfocada en la lógica del negocio.

    En resumen, la separación entre la capa persistente y la capa de dominio aún se puede lograr en una aplicación de modelo de dominio rico utilizando el Patrón Repositorio. Las entidades del dominio en sí no deben contener ningún código relacionado con la persistencia, pero deben ser mapeadas a su representación persistente por el repositorio.

Comments are closed.