Ejemplo de integracion Roo y Oracle
Haremos el Ejemplo de proyecto web ABM con Spring Roo accediendo a una base de datos Oracle en lugar de una base en memoria.
Contenido
Comando de persistencia
Habiendo generado el proyecto, el comando
persistence setup --database ORACLE --provider HIBERNATE
nos permite trabajar con un esquema en una base de datos oracle utilizando Hibernate como ORM.
Como vemos, genera un archivo database.properties donde está la información de conexión.
Por la versión de Spring Roo hay un error en el pom.xml por dependencias. Ver Problemas_frecuentes_con_Spring_Roo#Missing_artifact_com.oracle:ojdbc14:jar:10.2.0.2:compile
Configurando las propiedades de acceso a la base de datos
Podemos cambiar la configuración editando el archivo database.properties o mediante los comandos que provee roo, lo cual nos permitiría dejar un script listo para correrlo en otra ocasión.
El comando para ver todas las propiedades del archivo es:
database properties list
Para cambiar los valores:
database properties set --key database.password --value unaPassword
database properties set --key database.username --value unUsuario
database properties set --key database.url --value jdbc:oracle:thin:@unHost:unPuerto:unEsquema
Definición del modelo de datos
Como hicimos anteriormente, creamos las entidades y sus atributos:
entity --class ~.domain.Cubierta --testAutomatically
field string --fieldName nombre --notNull --sizeMin 2
entity --class ~.domain.Base --testAutomatically
field string --fieldName nombre --notNull --sizeMin 2
entity --class ~.domain.Pizza --testAutomatically
field string --fieldName nombre --notNull --sizeMin 2
field number --fieldName precio --type java.lang.Float
field set --fieldName coberturas --element ~.domain.Cubierta
field reference --fieldName base --type ~.domain.Base
entity --class ~.domain.Pedido --testAutomatically
field string --fieldName nombre --notNull --sizeMin 2
field string --fieldName direccion --sizeMax 30
field number --fieldName importe --type java.lang.Float
field date --fieldName fechaEntrega --type java.util.Date
field set --fieldName pizzas --element ~.domain.Pizza
Para probar el funciomiento ejecutar
controller all --package ~.web
perform package
y deployar. En este punto se puede verificar el modelo de datos accediendo a la base de datos. Los nombres de las tablas y columnas se corresponden con los nombres de las entidades y sus atributos, separando los nombres compuestos con "_". Ejemplo: fecha_entrega.
Características de la creación del modelo
- En el archivo persistence.xml el valor defecto de la propiedad "hibernate.hbm2ddl.auto" es "create", por lo cual se generara el esquema de bd al correr la aplicación. Para no perder los datos en el siguiente deploy deberá actualizarse dicho valor a "validate".
- El agregado de atributos en la aplicación provoca un alter en la tabla correspondiente.
- La eliminación de atributos en la aplicación no se refleja en la base de datos.
- Crea los objetos de base de datos y sus relaciones al ejecutar la aplicación por primera vez.
- Provee un campo "version" para el control de cambios que autoincrementa con cada update del registro.
- Provee un campo "id" usando una única secuencia para todo el modelo de datos.