Pregunta

En realidad no he visto ningún ejemplo, pero supongo que se guardan dentro de la tabla de entidad que contiene dentro de la base de datos.

Ie. Si tengo una entidad Persona / root agregada y una mesa persona correspondiente, si tuviera un objeto de valor llamada de direcciones, valores de Dirección se salvarían dentro de esta tabla Person!

¿Tiene sentido para un dominio en el que tengo otras entidades como empresas, etc., que tienen una dirección?

(estoy escribiendo actualmente una aplicación de gestión de proyectos y tratando de entrar en DDD)

¿Fue útil?

Solución

Está bien para guardar objetos de valor en una tabla separada, por las mismas razones que he descrito. Sin embargo, creo que estás malentendido Entidades vs Vos - no es una preocupación relacionada con la persistencia

.

Este es un ejemplo:

Supongamos que una Empresa y persona ambos tienen el mismo correo Dirección . ¿Cuál de estas declaraciones consideran válidos?

  1. "Si modifico Company.Address, quiero Person.Address para obtener de forma automática esos cambios "
  2. "Si modifico Company.Address, se no debe afectar Person.Address "

Si 1 es cierto, Dirección debe ser un Entidad , y por lo tanto tiene su propio tabla

Si 2 es cierto, Dirección debe ser un valor de los objetos . Podría ser almacenado como un componente dentro de la mesa de la entidad matriz, o podría tener su propia mesa (mejor normalización de bases de datos).

Como se puede ver, cómo se conserva Dirección no tiene nada que ver con la semántica Entidad / VO.

Otros consejos

La mayoría de los desarrolladores tienden a pensar en la base de datos antes de cualquier otra cosa. DDD no sabe nada de cómo se maneja la persistencia. Eso es hasta el repositorio que lidiar con eso. Puede persistir como un XML, SQL, archivo de texto, etc, etc entidades / agregados / objetos de valor son conceptos relacionados con el dominio.

Explicación por Vijay Patel es perfecto.

He comenzado a aprender DDD con el libro de Eric Evans y el proyecto dddsample por carretera excelente, como ejemplo. http://dddsample.sourceforge.net/

Así que para aquellos (como yo) que quiere materializar la diferencia en la implementación del código de este matiz en la capa de modelo de dominio, diría:

El método overidded es igual o / y / sameIdentityAs SameValueAs (de la entidad de interfaz y ValueObject) son, creo, el lugar de su expresión.

Es sólo mi sentimiento:)

Creo interesante leer esto también:

http://martinfowler.com/bliki/ValueObject.html

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top