JPA Domain Driven Design (1º Ventas Amazon.es en programación)

Este fin de semana he tenido una grata sorpresa ya que el libro JPA Domain Driven Design ha sido nº1 de ventas en la web de Amazon.es en la categoría de programación 🙂 siendo de un tema muy especifico .Muchas gracias a las personas que lo han hecho posible 🙂 .

Me han llegado algunas preguntas de gente que ha comprado el libro y voy a aprovechar este articulo para aclarar una que me ha parecido interesante sobre el modelado. En éste se comienza desde cero hasta construir un modelo de dominio como el siguiente utilizando JPA y sus anotaciones:

Resulta que en el modelo existen dos conceptos de importe uno a  nivel de Curso y otro a nivel de Matricula :

Delegación y JPA

La pregunta que me han hecho es :¿Podría eliminar uno de los importes? y usar el importe del Curso que es el realmente válido haciendo que la matricula delegue en él?. Es decir algo similar a  lo siguiente:

EL Tiempo

En principio parece una simplificación posible ya que estaríamos cumpliendo con el principio DRY de no repetir código o información . Ahora bien si revisamos el concepto mas a detalle  nos podremos dar cuenta de que esto no es así . Cuando modelamos tenemos que tener muy en cuenta el concepto de TIEMPO. ¿Es el importe que estamos almacenando el mismo el de Curso que el de Matrícula? .La realidad es que NO .Un curso puede cambiar su precio con el paso del tiempo .

En cambio una Matricula se almacena solo una vez cuando el alumno se inscribe. Por lo tanto los dos importes han de ser almacenados ya que si simplemente usáramos delegación cuando cambiaramos el precio de un Curso … todas las matriculas antiguas cambiarian sus importes. Lo cual es evidentemente un problema . Espero haber aclarado algunas dudas .

Related Post