Publicado el 21 de Enero del 2019
430 visualizaciones desde el 21 de Enero del 2019
868,7 KB
14 paginas
Experto Universitario Java Enterprise
Spring
Sesión 8: Desarrollo rápido de
aplicaciones con Roo
1
Experto Universitario Java Enterprise
Indice
• ¿Qué es Roo?
• Demo
• Capa de acceso a datos
• Active Record
• Finders
• Pruebas
• Capa web
• Scaffolding
• REST
Desarrollo rápido con Roo
© 2012-2013 Depto. Ciencia de la Computación e IA
Spring
2
Experto Universitario Java Enterprise
Qué es Roo
• Motivación
• Empezar un proyecto de cero es tedioso (dependencias, configuración,...)
• Hay mucho código repetitivo en las aplicaciones (p.ej. CRUD)
• Spring Roo
• Herramienta de generación de código
Separa físicamente el código generado del creado manualmente por el desarrollador,
gracias al uso de AOP
• Subproyecto de Spring que usa sus tecnologías y otras tecnologías estándar JavaEE o
estándar de facto
Maven, JPA, Tiles, JSF, GWT,...
• No incorpora componentes adicionales en tiempo de ejecución
• Sería ingenuo creer que Roo nos va a escribir la aplicación entera...
Desarrollo rápido con Roo
© 2012-2013 Depto. Ciencia de la Computación e IA
Spring
3
Experto Universitario Java Enterprise
Arquitectura apps Roo vs “estándar”
http://blog.springsource.org/2011/09/14/new-application-layering-and-persistence-choices-in-spring-roo/
http://i.msdn.microsoft.com/ms998418.j2ee_interop_c6_fig6-1(en-us,MSDN.10).gif
Desarrollo rápido con Roo
© 2012-2013 Depto. Ciencia de la Computación e IA
Spring
4
Roo“Estándar”
Experto Universitario Java Enterprise
Capa de acceso a datos
• Tecnologías de persistencia: JPA y MongoDB
• En JPA podemos seleccionar el proveedor de persistencia (implementación) y la base de datos
que deseamos
• Opciones de arquitectura
• Active Record (por defecto): los propios objetos del dominio se “responsabilizan” de la
persistencia. Idea usada en muchos frameworks RAD web: Rails, Grails, Django, ...
• Repositories: al estilo de los DAOs. Implementados con Spring Data (subproyecto de Spring)
• Funcionalidades adicionales
• Finders: métodos de búsqueda de datos generados automáticamente
• Validación JSR303
• Podemos generar automáticamente las entidades haciendo ingeniería inversa de la base de
datos
• Pruebas
Desarrollo rápido con Roo
© 2012-2013 Depto. Ciencia de la Computación e IA
Spring
5
Experto Universitario Java Enterprise
Active Record
• Automáticamente se generan métodos CRUD
Desarrollo rápido con Roo
© 2012-2013 Depto. Ciencia de la Computación e IA
Spring
6
//CreateTarea t = new Tarea();t.setLimite(new Date());t.setPrioridad(1);t.setTitulo("Probando");t.persist();//Readfor (Tarea t_i : Tarea.findAllTareas()) { System.out.println(t_i.getTitulo());}//UpdateTarea t2 = Tarea.findTarea(1L);t2.setPrioridad(1);t2.merge();//DeleteTarea t3 = Tarea.findTarea(2L);t3.remove();
Experto Universitario Java Enterprise
Finders
• Métodos para buscar por uno o más campos que cumplan una serie de
condiciones
• A partir del nombre del finder, y siguiendo una serie de convenciones simples Roo
generará automáticamente el código
Desarrollo rápido con Roo
© 2012-2013 Depto. Ciencia de la Computación e IA
Spring
7
findTareasByTituloEquals(String titulo) findTareasByTituloNotEquals(String titulo)findTareasByTituloLike(String titulo) findTareasByPrioridad(int prioridad)findTareasByLimiteLessThan(Date limite)findTareasByLimiteBetween(Date minLimite, Date maxLimite)~.domain.Tarea roo> finder add --finderName findTareasByPrioridad
Experto Universitario Java Enterprise
Pruebas
• Podemos generarlas automáticamente
• Para ejecutar pruebas es posible que necesitemos entidades con valores válidos
pero al azar (clase XXXDataOnDemand)
Desarrollo rápido con Roo
© 2012-2013 Depto. Ciencia de la Computación e IA
Spring
8
roo> test integration --entity es.ua.jtech.domain.Proyecto@Testpublic void testDeEjemplo() { ProyectoDataOnDemand pdod = new ProyectoDataOnDemand(); Proyecto p = pdod.getNewTransientProyecto(1); p.persist(); Proyecto p2 = Proyecto.findProyecto(p.getId()); assertEquals(p.toString(),p2.toString());}
Experto Universitario Java Enterprise
Relaciones entre entidades
• Podemos hacerlo desde línea de comandos o editar directamente el .java
• Ejemplo: relación entre Proyecto y Tareas pertenecientes a él
Desarrollo rápido con Roo
© 2012-2013 Depto. Ciencia de la Computación e IA
Spring
9
roo> focus --class es.ua.jtech.domain.Proyecto~.domain.Proyecto roo> field set --fieldName tareas --type Tarea --cardinality ONE_TO_MANY --mappedBy proyecto~.domain.Proyecto roo> focus --class es.ua.jtech.domain.Tarea~.domain.Tarea roo> field reference --fieldName proyecto --type Proyecto --cardinality MANY_TO_ONE
Experto Universitario Java Enterprise
La capa web
• Comenzar con
• Scaffolding: generar automáticamente CRUD para la capa web: controllers y
vistas (JSP + Tiles)
Desarrollo rápido con Roo
© 2012-2013 Depto. Ciencia de la Computación e IA
Spring
10
roo> web mvc setuproo> web mvc all --package es.ua.jtech.webroo> focus es.ua.jtech.domain.Proyecto~.domain.Proyecto roo> web mvc scaffold --class es.ua.jtech.web.ProyectoController
Experto Universitario Java Enterprise
La capa web (II)
• Acceso web a los finders
• Anotar el controlador con @RooFinder, o bien
• Capa REST
• Las URL generadas automáticamente por el scaffolding son RESTful, pero no devuelven JSON
• Para generar controladores CRUD que devuelven JSON
Desarrollo rápido con Roo
© 2012-2013 Depto. Ciencia de la Computación e IA
Spring
11
roo> web mvc finder allroo> json all #da soporte JSON a todas las entidadesroo> web json setup #solo necesario si no hemos hecho ya web mvc setuproo> web mvc json all #genera los controllers CRUD para json
Experto Universitario Java Enterprise
Refactorizar código Roo
• Caso más típico: push-in, pasar código de un .aj a Java para poder editarlo y
modificarlo según nuestras necesidades
• Por ejemplo modificar un finder para cambiar la ordenación de los resultados
Desarrollo rápido con Roo
© 2012-2013 Depto. Ciencia de la Computación e IA
Spring
12
Experto Universitario Java Enterprise
Roo vs. Grails
• Hay ciertas semejanzas aparentes
• Herramientas en línea de comandos
• Usan Spring “por debajo”
• Active Record
• Finders
• Ambos “son” de SpringSource
• Diferencia: Roo genera código Java puro. En Grails se usa Groovy (dinámico)
Desarrollo rápido con Roo
© 2012-2013 Depto. Ciencia de la Computación e IA
Spring
13
Experto Universitario Java Enterprise
¿Preguntas...?
Desarrollo rápido con Roo
© 2012-2013 Depto. Ciencia de la Computación e IA
Spring 14
Comentarios de: Sesión 8: Desarrollo rápido de aplicaciones con Roo (0)
No hay comentarios