PDF de programación - Sesión 8: Desarrollo rápido de aplicaciones con Roo

<<>>
Imágen de pdf Sesión 8: Desarrollo rápido de aplicaciones con Roo

Sesión 8: Desarrollo rápido de aplicaciones con Roográfica de visualizaciones

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
  • Links de descarga
http://lwp-l.com/pdf14935

Comentarios de: Sesión 8: Desarrollo rápido de aplicaciones con Roo (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad