Roo: Pasos para crear una aplicación mínima
Un paso-a-paso para crear un primer proyecto con Spring Roo.
Contenido
Creación del proyecto
project --topLevelPackage com.dosideas.helloroo
Elección del framework de persistencia
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
NOTA: Por defecto, en persistence.xml el valor de la propiedad hibernate.hbm2ddl.auto es create (genera el esquema de datos con cada ejecucion). Deberá actualizarse esta propiedad al valor deseado.
Creación del modelo de dominio
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):
@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
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.
Generación de la capa de presentación
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
La herramienta genera paginas multi-lenguaje correctamente. La pluralización está correctamente soportada en inglés, por ejemplo en castellano hay algunos errores sintácticos.