Descargar la presentación
La descarga está en progreso. Por favor, espere
1
ddd PATTERNS JAVA PLATFORM @AlfredoCasado
2
¿De que vamos ha hablar? Presentación del modelo
Ejemplo de implementación spring-hibernate anemico Ejemplo de implementación spring-hibernate DDD
3
MODELO: CARTERAS DE INVERSIÓN
Accion Unidades Cotización Entidad Total IBM 100 14 bankinter 1400 Yahoo 10 12 bank of America 120 TOTAL: 1520
7
implementación Tecnologías utilizadas java 1.6 maven 2 spring 3.0
hibernate 3.5 / API JPA 2.0 JUnit 4.10
8
Modelo anémico
9
detalles de persistencia en el modelo
Anotaciones confusas ¡no es una entidad! detalles de persistencia en el modelo
10
nos saltamos la ley de demeter
Acoplamiento nos saltamos la ley de demeter
11
Reparto de responsabilidades
No seguimos el patrón experto (GRASP) No seguimos single responsability (SOLID)
12
ENTIDADES SIN COLABORADORES
El ORM instancia mis objetos de dominio. ¿Como le inyecto el actualizador de cotizaciones?
13
falsa separación entre capas
¿persistence? ¿esto no era el modelo? “AOP magic” (con cgi-lib o DynamicProxy)
14
falsa separación entre capas
15
Posible solución
17
estructuras de datos Son “sólo” estructuras de datos.
JPA impide poner “public”.
18
Las entidades tienen colaboradores
volvemos a controlar el proceso de instanciación RepositorioEF
19
Separación más efectiva de responsabilidades
Cartera Inversión Acción EntidadFinanciera
20
Mantener el ritmo de desarrollo
Anémico DDD Productividad Tiempo
21
Hay otras opciones Inyectar colaboradores “a mano” via setters
Inyectar con filtros en la construcción de objetos de hibernate Inyectar utilizando AOP con spring No usar hibernate, no usar spring Google guice es una alternativa seria a spring. JDBC, ibatis o queryDSL son alternativas serias a hibernate.
22
Conclusiones Poner los frameworks a nuestro servicio en lugar de estar nosotros al suyo Nos obsesionamos con frameworks técnicos y se nos olvida lo básico (OO, patrones, GRASP, SOLID) Usamos frameworks que facilitan lo más sencillo (hacer un CRUD) a costa de dificultar lo realmente complejo: construir un buen dominio. El desarrollo de software no es construir la versión 1.0 , normalmente consiste en pasar de la N a la N+1.
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.