Capa de Persistencia de Spring Roo

De Dos Ideas.
Revisión del 12:00 22 jul 2010 de Cblatter (discusión | contribuciones) (Página creada con 'Haremos el Ejemplo de proyecto web ABM con Spring Roo accediendo a una base de datos Oracle en lugar de una base en memoria. == Comando de persistencia == Habiendo generad…')
(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar

Haremos el Ejemplo de proyecto web ABM con Spring Roo accediendo a una base de datos Oracle en lugar de una base en memoria.

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.

Roo database properties.gif

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.

Ver tambien