Ddd PATTERNS JAVA PLATFORM @AlfredoCasado. ¿De que vamos ha hablar? Presentación del modelo...
-
Upload
hictor-cazares -
Category
Documents
-
view
9 -
download
1
Transcript of Ddd PATTERNS JAVA PLATFORM @AlfredoCasado. ¿De que vamos ha hablar? Presentación del modelo...
![Page 1: Ddd PATTERNS JAVA PLATFORM @AlfredoCasado. ¿De que vamos ha hablar? Presentación del modelo Ejemplo de implementación spring-hibernate anemico Ejemplo.](https://reader036.fdocument.pub/reader036/viewer/2022081414/54cfec7b49795990548b4f5c/html5/thumbnails/1.jpg)
ddd PATTERNSJAVA PLATFORM
@AlfredoCasado
![Page 2: Ddd PATTERNS JAVA PLATFORM @AlfredoCasado. ¿De que vamos ha hablar? Presentación del modelo Ejemplo de implementación spring-hibernate anemico Ejemplo.](https://reader036.fdocument.pub/reader036/viewer/2022081414/54cfec7b49795990548b4f5c/html5/thumbnails/2.jpg)
¿De que vamos ha hablar?
• Presentación del modelo
• Ejemplo de implementación spring-hibernate anemico
• Ejemplo de implementación spring-hibernate DDD
![Page 3: Ddd PATTERNS JAVA PLATFORM @AlfredoCasado. ¿De que vamos ha hablar? Presentación del modelo Ejemplo de implementación spring-hibernate anemico Ejemplo.](https://reader036.fdocument.pub/reader036/viewer/2022081414/54cfec7b49795990548b4f5c/html5/thumbnails/3.jpg)
MODELO: CARTERAS DE INVERSIÓN
Accion Unidades Cotización Entidad Total
IBM 100 14bankinte
r1400
Yahoo 10 12bank
ofAmerica
120
TOTAL: 1520
![Page 4: Ddd PATTERNS JAVA PLATFORM @AlfredoCasado. ¿De que vamos ha hablar? Presentación del modelo Ejemplo de implementación spring-hibernate anemico Ejemplo.](https://reader036.fdocument.pub/reader036/viewer/2022081414/54cfec7b49795990548b4f5c/html5/thumbnails/4.jpg)
![Page 5: Ddd PATTERNS JAVA PLATFORM @AlfredoCasado. ¿De que vamos ha hablar? Presentación del modelo Ejemplo de implementación spring-hibernate anemico Ejemplo.](https://reader036.fdocument.pub/reader036/viewer/2022081414/54cfec7b49795990548b4f5c/html5/thumbnails/5.jpg)
![Page 6: Ddd PATTERNS JAVA PLATFORM @AlfredoCasado. ¿De que vamos ha hablar? Presentación del modelo Ejemplo de implementación spring-hibernate anemico Ejemplo.](https://reader036.fdocument.pub/reader036/viewer/2022081414/54cfec7b49795990548b4f5c/html5/thumbnails/6.jpg)
![Page 7: Ddd PATTERNS JAVA PLATFORM @AlfredoCasado. ¿De que vamos ha hablar? Presentación del modelo Ejemplo de implementación spring-hibernate anemico Ejemplo.](https://reader036.fdocument.pub/reader036/viewer/2022081414/54cfec7b49795990548b4f5c/html5/thumbnails/7.jpg)
implementación
• Tecnologías utilizadas
• java 1.6
• maven 2
• spring 3.0
• hibernate 3.5 / API JPA 2.0
• JUnit 4.10
![Page 8: Ddd PATTERNS JAVA PLATFORM @AlfredoCasado. ¿De que vamos ha hablar? Presentación del modelo Ejemplo de implementación spring-hibernate anemico Ejemplo.](https://reader036.fdocument.pub/reader036/viewer/2022081414/54cfec7b49795990548b4f5c/html5/thumbnails/8.jpg)
Modelo anémico
![Page 9: Ddd PATTERNS JAVA PLATFORM @AlfredoCasado. ¿De que vamos ha hablar? Presentación del modelo Ejemplo de implementación spring-hibernate anemico Ejemplo.](https://reader036.fdocument.pub/reader036/viewer/2022081414/54cfec7b49795990548b4f5c/html5/thumbnails/9.jpg)
Anotaciones confusas
¡no es una entidad!
detalles de persistencia en el modelo
![Page 10: Ddd PATTERNS JAVA PLATFORM @AlfredoCasado. ¿De que vamos ha hablar? Presentación del modelo Ejemplo de implementación spring-hibernate anemico Ejemplo.](https://reader036.fdocument.pub/reader036/viewer/2022081414/54cfec7b49795990548b4f5c/html5/thumbnails/10.jpg)
Acoplamiento
nos saltamos la ley de demeter
![Page 11: Ddd PATTERNS JAVA PLATFORM @AlfredoCasado. ¿De que vamos ha hablar? Presentación del modelo Ejemplo de implementación spring-hibernate anemico Ejemplo.](https://reader036.fdocument.pub/reader036/viewer/2022081414/54cfec7b49795990548b4f5c/html5/thumbnails/11.jpg)
Reparto de responsabilidades
No seguimos el patrón experto (GRASP)
No seguimos single responsability (SOLID)
![Page 12: Ddd PATTERNS JAVA PLATFORM @AlfredoCasado. ¿De que vamos ha hablar? Presentación del modelo Ejemplo de implementación spring-hibernate anemico Ejemplo.](https://reader036.fdocument.pub/reader036/viewer/2022081414/54cfec7b49795990548b4f5c/html5/thumbnails/12.jpg)
ENTIDADES SIN COLABORADORES
El ORM instancia mis objetos de dominio.
¿Como le inyecto el actualizador de cotizaciones?
![Page 13: Ddd PATTERNS JAVA PLATFORM @AlfredoCasado. ¿De que vamos ha hablar? Presentación del modelo Ejemplo de implementación spring-hibernate anemico Ejemplo.](https://reader036.fdocument.pub/reader036/viewer/2022081414/54cfec7b49795990548b4f5c/html5/thumbnails/13.jpg)
falsa separación entre capas
¿persistence? ¿esto no era el modelo?
“AOP magic” (con cgi-lib o DynamicProxy)
![Page 14: Ddd PATTERNS JAVA PLATFORM @AlfredoCasado. ¿De que vamos ha hablar? Presentación del modelo Ejemplo de implementación spring-hibernate anemico Ejemplo.](https://reader036.fdocument.pub/reader036/viewer/2022081414/54cfec7b49795990548b4f5c/html5/thumbnails/14.jpg)
falsa separación entre capas
![Page 15: Ddd PATTERNS JAVA PLATFORM @AlfredoCasado. ¿De que vamos ha hablar? Presentación del modelo Ejemplo de implementación spring-hibernate anemico Ejemplo.](https://reader036.fdocument.pub/reader036/viewer/2022081414/54cfec7b49795990548b4f5c/html5/thumbnails/15.jpg)
Posible solución
![Page 16: Ddd PATTERNS JAVA PLATFORM @AlfredoCasado. ¿De que vamos ha hablar? Presentación del modelo Ejemplo de implementación spring-hibernate anemico Ejemplo.](https://reader036.fdocument.pub/reader036/viewer/2022081414/54cfec7b49795990548b4f5c/html5/thumbnails/16.jpg)
![Page 17: Ddd PATTERNS JAVA PLATFORM @AlfredoCasado. ¿De que vamos ha hablar? Presentación del modelo Ejemplo de implementación spring-hibernate anemico Ejemplo.](https://reader036.fdocument.pub/reader036/viewer/2022081414/54cfec7b49795990548b4f5c/html5/thumbnails/17.jpg)
estructuras de datos
Son “sólo” estructuras de datos.JPA impide poner “public”.
![Page 18: Ddd PATTERNS JAVA PLATFORM @AlfredoCasado. ¿De que vamos ha hablar? Presentación del modelo Ejemplo de implementación spring-hibernate anemico Ejemplo.](https://reader036.fdocument.pub/reader036/viewer/2022081414/54cfec7b49795990548b4f5c/html5/thumbnails/18.jpg)
Las entidades tienen colaboradores
volvemos a controlar el proceso de instanciación
RepositorioEF
![Page 19: Ddd PATTERNS JAVA PLATFORM @AlfredoCasado. ¿De que vamos ha hablar? Presentación del modelo Ejemplo de implementación spring-hibernate anemico Ejemplo.](https://reader036.fdocument.pub/reader036/viewer/2022081414/54cfec7b49795990548b4f5c/html5/thumbnails/19.jpg)
Separación más efectiva de responsabilidades
Cartera Inversión
Acción
EntidadFinanciera
![Page 20: Ddd PATTERNS JAVA PLATFORM @AlfredoCasado. ¿De que vamos ha hablar? Presentación del modelo Ejemplo de implementación spring-hibernate anemico Ejemplo.](https://reader036.fdocument.pub/reader036/viewer/2022081414/54cfec7b49795990548b4f5c/html5/thumbnails/20.jpg)
Mantener el ritmo de desarrollo
Tiempo
Productividad
DDDAnémico
![Page 21: Ddd PATTERNS JAVA PLATFORM @AlfredoCasado. ¿De que vamos ha hablar? Presentación del modelo Ejemplo de implementación spring-hibernate anemico Ejemplo.](https://reader036.fdocument.pub/reader036/viewer/2022081414/54cfec7b49795990548b4f5c/html5/thumbnails/21.jpg)
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.
![Page 22: Ddd PATTERNS JAVA PLATFORM @AlfredoCasado. ¿De que vamos ha hablar? Presentación del modelo Ejemplo de implementación spring-hibernate anemico Ejemplo.](https://reader036.fdocument.pub/reader036/viewer/2022081414/54cfec7b49795990548b4f5c/html5/thumbnails/22.jpg)
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.