Diferencia entre revisiones de «Spring Roo»

De Dos Ideas.
Saltar a: navegación, buscar
(Creación del modelo de datos)
Línea 90: Línea 90:
 
== Pasos para crear una aplicación mínima ==
 
== Pasos para crear una aplicación mínima ==
  
=== Crear un proyecto ===
+
En [[Roo: Pasos para crear una aplicación mínima]] vemos como:
  
  project --topLevelPackage  com.dosideas.helloroo
+
*Crear el proyecto
 
+
*Elegir el framework de persistencia
=== Elegir el framework de persistencia ===
+
*Crear el modelo de dominio
 
+
*Generar la interfaz gráfica
Se puede elegir entre 3 frameworks y 8 bases de datos
 
 
 
Frameworks:
 
 
 
* ECLIPSELINK
 
* HIBERNATE
 
* OPENJPA
 
 
 
 
 
Bases de datos:
 
 
 
* DB2
 
* H2_IN_MEMORY
 
* HYPERSONIC_IN_MEMORY
 
* HYPERSONIC_PERSISTENT
 
* MSSQL
 
* MYSQL
 
* ORACLE
 
* POSTGRES
 
* SYBASE
 
 
 
 
 
Ej.:
 
 
 
  persistence setup --provider HIBERNATE --database HYPERSONIC_IN_MEMORY
 
 
 
=== Creación del modelo de datos ===
 
 
 
Junto con la creación de la clase se puede elegir de crear los tests de componentes correspondientes.
 
 
 
  entity --class ~.domain.Client --testAutomatically
 
 
 
Este comando genera la clase Client.java con las siguientes anotacioes, basado en la programación orientada a aspectos (AspectJ):
 
 
 
<code>
 
@RooJavaBean: genera un aspecto para que le agrega a la entidad, en tiempo de compilacion, sus getters/setters y el constructor por defecto
 
@RooToString: genera un aspecto para render en pantalla y formateo de calendario
 
@RooEntity: genera un aspecto para agregar la lógica de persistencia: count, findAll, findById, findEntries, persist, remove, flush y merge
 
</code>
 
 
 
Por cada campo a agregar a la clase es necesario definir el tipo, el nombre y las restricciones que pueda tener.
 
 
 
  field string --fieldName name --notNull --sizeMax 24 --sizeMin 3
 
  field string --fieldName surname --notNull --sizeMin 3 --sizeMax 24
 
  field date --fieldName birthDate --type java.util.Date --notNull
 
  field boolean --fieldName active
 
  field number --fieldName numberOfKids --type java.lang.Integer --notNull  --max 99
 
 
 
==== Expresiones regulares ====
 
 
 
Existe un bug reportado que impide el uso de expresiones regulares, si bien teoricamente son soportadas por Roo.
 
 
 
=== Interfaz gráfica ===
 
 
 
Roo permite la creación de la interfaz gráfica web, que comprende de una alta, baja, modificación y listado.
 
Se puede especificar de que objeto de negocio se requiere o bien crearla para todos.
 
 
 
  controller all --package ~.web
 
  
 
=== Maven ===
 
=== Maven ===

Revisión del 14:36 15 jul 2010

Descripción

Spring Roo es una herramienta RAD extensible. Basicamente es un generador de código avanzado, que se utiliza desde la linea de comandos invocando sentencias. La idea detrás de Roo es incrementar la productividad del desarrollador Java sin comprometer la integridad estructural o la flexibilidad de la solución. No contiene un componente Runtime. Esto es muy importante, no solo porque no ata la solución al framework, sino porque no genera overhead. Se puede eliminar facilmente.

Está construido con una serie de plugins (al estilo de Maven). Fue diseñado pensando en la usabilidad. Los comandos son contextuales; tiene los comandos "hint" y "help" para consultar el uso rápidamente y la tecla TAB para autocompletar. Está basado en scripts, por lo que en caso que se cometer un error, se puede hacer rollback. Todos los comandos escritos se van guardando automáticamente (log.roo).

Características

  • Permite desarrollar una aplicación Web en minutos. Genera un war. Construye dos capas: la de persistencia y la de presentación. Para agregar la capa de negocio, se pueden agregar las clases manualmente a los controladores generados con Roo.
  • Permite generar un modelo de datos complejo, incluyendo validaciones.
  • La aplicación Web es RESTful y tiene soporte para internacionalización en varios idiomas.
  • Tiene soporte de seguridad out-of-the-box.

Generación de código

Es un generador de código hibrido, utilizando generación activa y pasiva.

Utiliza generación pasiva para generación de archivos java y xml. Utiliza generación activa para la metadata con la ayuda de los tags @Roo* y modifica gradualmente .aj y los jsp.

Sincroniza los cambios entre Roo y las modificaciones realizadas al código (roundtrip).

Spring Roo no interviene en runtime, solo lo hace en tiempo de desarrollo. Una vez creado el proyecto con Spring Roo, podría eliminarse y seguir trabajando con un IDE.

Librerías/Frameworks que usa

Requisitos

Tener instalado Java y Maven, las últimas versiones estables.

Configuración

Descargar la última versión de Roo del sitio oficial. Descomprimir en una carpeta en el disco local. Ej: c:\roo-1.2 Incluir la carpeta con los ejecutables dentro de la variable de entorno PATH. Ej.: c:\roo-1.2\bin

Uso

Para empezar a Roo, crear una carpeta e invocar a Roo Ej.:

 mkdir helloworld
 cd helloworld
 roo

Al hacer eso se iniciará la interfaz y desplegará el siguiente mensaje:

    / __ \/ __ \/ __ \
   / /_/ / / / / / / /
  / _, _/ /_/ / /_/ /
 /_/ |_|\____/\____/    1.0.2.RELEASE [rev 638]
 
 
 Welcome to Spring Roo. For assistance press TAB or type "hint" then hit ENTER.
 roo>

La tecla TAB despliega las opciones:

 */            /*            //            ;             addon         date          development   exit          help          hint
 metadata      poll          project       quit          reference     script        system        version
 roo>
 

La sentencia help lista todos los comandos con descripciones breves.

Ejecutar un script

Todo lo que se va ejecutando por consola, se va grabando en un archivo de log (log.roo). Es posible re-ejecutar las acciones, copiando el archivo con otro nombre y utilizando la sentencia 'script <nombre de archivo>' Ej.:

 roo>script helloworld.roo

Pasos para crear una aplicación mínima

En Roo: Pasos para crear una aplicación mínima vemos como:

  • Crear el proyecto
  • Elegir el framework de persistencia
  • Crear el modelo de dominio
  • Generar la interfaz gráfica

Maven

Desde Roo se pueden ejecutar varias tareas de Maven sin tener que salir del entorno. Por ejemplo:

  • 'perform tests' equivale a 'mvn test'
  • 'perform eclipse' equivale a 'mvn eclipse:eclipse'

Seguridad

El módulo de seguridad que viene out-of-the-box necesita unos pequeños cambios de configuración. De forma predeterminada viene configurado un path segurizado que no corresponde con la aplicación en desarrollo. Se invoca mediante la sentencia:

 security setup

Ejemplos

Necesitamos tener correctamente instaladas las siguientes versiones (verificar la configuración de las variables de entorno PATH y JAVA_HOME):

  • JDK 1.6 UPDATE 21
  • Spring Roo 1.0.2
  • Apache Maven 2.2.1


Para poder ejecutar los siguientes ejemplos:

Problemas y soluciones

Para que es ideal

  • Hacer backends de Administración (ABMs/CRUDs con interfaz Web)

Lo que le falta

  • La posibilidad de importar modelos de datos,ya sea desde la base de datos o bien de un archivo de configuración Hibernate. (próximamente disponible en la versión 1.1.0)

Ver también