Persistencia a la ignorancia y realidad DDD.

Estoy tratando de implementar la ignorancia de persistencia totalmente válida con poco esfuerzo. Aunque tengo muchas preguntas:

La opción más sencilla.

Es realmente sencillo: ¿está bien tener entidades anotadas con anotaciones de Spring Data como en SOA (pero hacer que realmente hagan la lógica)? ¿Cuáles son las consecuencias además de tener que usar la anotación de persistencia en las Entidades, que realmente no sigue el principio de PI? Quiero decir, ¿es realmente el caso con Spring Data? Proporciona repositorios agradables que hacen lo que deberían hacer los repositorios en DDD. El problema es con las entidades mismas entonces ...

La opción más difícil.

Para que una Entidad no sepa de dónde provienen los datos de los que opera, es natural inyectar esos datos como una interfaz a través del constructor. Otra ventaja es que siempre podríamos realizar una carga lenta, que tenemos por defecto en la base de datos gráfica Neo4j, por ejemplo. El inconveniente es que los Agregados (que componen las Entidades) estarán totalmente al tanto de todos los datos, incluso si no los usan, posiblemente podría llevar a dificultades de depuración ya que los datos están totalmente expuestos (los DAO serían jerárquicos como los Agregados). Esto también nos obligaría a usar algunos adaptadores para los repositorios, ya que ya no almacenan Entidades reales ... Y cualquier traducción es fea ... Otra cosa es que no podemos crear una instancia de una Entidad sin tal DAO, aunque podría haber -Implementaciones de memoria en el dominio ... de nuevo, más capas. Algunos dicen que inyectar DAO también rompe PI.

La opcion mas dificil

La Entidad podría estar envuelta alrededor de un cargador perezoso que decide de dónde provienen los datos. Puede ser tanto en memoria como en base de datos, y puede manejar cualquier operación que necesite transacciones, etc. La capa compleja, sin embargo, pero podría ser genérica hasta cierto punto quizás ...? Tener una lectura al respectoaquí

¿Conoces alguna otra solución? O tal vez me esté perdiendo algo en los mencionados. Por favor comparte tus pensamientos!

Respuestas a la pregunta(4)

Su respuesta a la pregunta