Diferencia entre revisiones de «Ejemplo de integracion Roo y Oracle»

De Dos Ideas.
Saltar a: navegación, buscar
(Ver tambien)
(Blanqueada la página)
 
(No se muestra una edición intermedia de otro usuario)
Línea 1: Línea 1:
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
 
 
<code>
 
persistence setup --database ORACLE --provider HIBERNATE
 
</code>
 
 
nos permite trabajar con un esquema en una base de datos oracle utilizando Hibernate como ORM.
 
 
[[Archivo: roo_database_properties.gif | 650 px]]
 
 
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:
 
<code>
 
database properties list
 
</code>
 
 
Para cambiar los valores:
 
<code>
 
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
 
</code>
 
 
== Definición del modelo de datos ==
 
 
Como hicimos anteriormente, creamos las entidades y sus atributos:
 
 
<code>
 
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
 
</code>
 
 
Para probar el funciomiento ejecutar
 
<code>
 
controller all --package ~.web
 
perform package
 
</code>
 
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 ==
 
* [[Spring Roo]]
 
* [https://jira.springsource.org/browse/ROO-435 Introspeccion a un base de datos existente]
 
* [http://tomchikoore.com/2010/03/19/tutorial-for-using-spring-roo-with-an-existing-database/ Tutorial para usar Spring Roo con una base de datos existente]
 

Revisión actual del 12:00 22 jul 2010