Como comentábamos en este post que la última milestones de Spring ROO ofrecía soporta para ingeniería inversa de base de datos, pues bien, vamos a ver cómo se haría y algunas peculiaridades de las enitdades que genera Spring ROO.
Si no tenéis configurado el Entorno: Spring ROO + Maven + Spring Tool Suite os recomiendo leer antes este post.
En el post de hoy vamos a importar una base de datos MySQL de la herramienta de gestión de incidencias
.
Comencemos ya…
1) Creo una carpeta DBRE_Mantis y desde dentro ejecuto setEnvironment_ROO.bat:
2) Lanzo >roo
3) Creo el proyecto con >project –topLevelPackage es.indra.dbre.mantis
4) Establezco la persistencia: Hibernate con MySQL: >persistence setup –provider HIBERNATE –database MYSQL
![]()
5) Edito los valores de conexión a la base de datos en el fichero src/main/resources/META-INF/spring/database.properties (se puede hacer por comandos roo pero creo que es más sencillo editar directamente el fichero):
6) Desde roo reviso si están bien introducidos con: >database properties list
![]()
7) Y por fin el comando clave: >database reverse engineer –package ~.dominio –schema mantis este comando me hará ingeniería inversa de la base de datos configurada en database.properties y el esquema indicado a las clases del paquete dominio (dentro del paquete raíz del proyecto):
8) Genero el proyecto Eclipse con >perform eclipse
9) Import el proyecto en STS::
10) Si vamos a cualquier Entidad generado veremos que en la entidad no aparece ningún atributo, sólo una nueva anotación @RooDbManaged:
Spring ROO genera las entidades importadas de BD de forma diferente a las generadas manualmente, y en lugar de crear los atributos en la clase lo hace en el Aspecto
.
De este modo Spring ROO puede hacer reingeniería de forma incremental.
11) Si abro el aspecto veo que contiene los atributos de la Entidad:











28 agosto 2010 a las 17:59
[...] http://unpocodejava.wordpress.com/2010/08/28/spring-roo-ingenieria-inversa-de-una-base-de-datos/ August 28, 2010 // MySQL // No Comments // [...]
29 agosto 2010 a las 21:34
[...] instalar y configurar un Entorno de Desarrollo Conferencia de OutOfMemoryErrors en SpringOne Spring ROO: Ingeniería Inversa de una base de datos Google Drawings: Prototipado rápido Google recomienda cambiar tu nombre en la red [...]
31 agosto 2010 a las 14:49
Muy bueno el resumen
Mi duda es, que si los atributos están en el fichero *DbManaged.aj correspondiente y el STS sólo me muestra la clase “vacia”, ¿Cómo trabajamos con ella?
¿Podrias dar un ejemplo de como rellenar los datos de los atributos?
Igual es una duda de novato, pero no lo acabo de ver
31 agosto 2010 a las 19:14
Si generas el proyecto de Eclipse con perform eclipse (o con mvn eclipse:eclipse) y lo abres verás que los atributos están disponibles aunque estén en el aspecto. Esto es porque los aspectos se “postcompilan” modificando el .class.
1 septiembre 2010 a las 8:27
Gracias por tus comentarios. Como el proyecto lo había generado desde el STS y aún no se había ejecutado la compilación de aspectos, aún no veia nada al completar el código …
Muchas gracias!!!
8 septiembre 2010 a las 0:43
Pregunta, se puede ligar Spring Roo con una BD Firebird?, he estado buscando poder hacerlo sin conseguir nada, tendrá alguien información de cómo hacerlo?.
saludos.
8 septiembre 2010 a las 0:45
Has metido el jar del driver en %ROO_HOME%/bin? puedes copiar el error…
9 septiembre 2010 a las 0:15
Si de entrada pensé que era el driver, descargue el archivo jaybird-2.1.1.jar y lo puse así como comentas pero tenía el mismo problema. Luego buscando un poco en la red encontré que podía meter en el archivo POM.xml la dependencia para que automáticamente MAVEN descargara el archivo y efectivamente lo hiso y lo dejo en la siguiente carpeta:
C:\Users\pEpE\.m2\repository\net\sf\squirrel-sql\thirdparty-non-maven\jaybird
La modificación al archivo POM.xml consiste básicamente en poner lo siguiente:
———————————
net.sf.squirrel-sql.thirdparty-non-maven
jaybird
2.1.1
———————————
También ya modifique los archivos persistence.xml y database.properties que se encuentran en \src\main\resources\META-INF del proyecto que son los que he modificado cuando hago la conexión a mano de MySQL.
———————————–
código agregado a persistence.xml
———————————-
——————————————-
Código agregado al archivo database.properties
database.password=masterkey
database.url=jdbc:firebirdsql:localhost/3050:C:\\Users\\pEpE\\Downloads\\pizza\\pizza.fdb
database.username=sysdba
database.driverClassName=org.firebirdsql.jdbc.FBDriver
——————————————-
El error básicamente es que no conecta con el archivo de BD para crear las tablas y campos y así establecer el mapeo correcto de las clases con las tablas, eso pienso ya que cuando tenía el mismo error al tratar de hacerlo con MySQL me marcaba exactamente los mismos errores, en MySQL mi error era que no había creado la BD y por lo tanto no podía conectar pero pues como BD para mi gusto es mucho mas completa Firebird y por eso quiero hacer un proyecto utilizándola pero si de plano no puedo tendré que quedarme con MySQL
Nuevamente gracias por tus comentarios que podrías ayudarme.
13 septiembre 2010 a las 0:13
Vaya!, yo con Oracle tampoco he podido hacer la ingeniería inversa ni siguiendo los comentarios que aparecen en el Wiki de Spring ROO. Creo que es porque los drivers de Oracle (y Firebird en tu caso) no son OSGi. Si te fijas en el driver de MySQL que viene con la distribución es OSGi (mira el archivo manifest.mf).
El otro día descargué los fuentes del addon que se encarga de conectar con el driver y empecé a jugar para ver si conseguía solucionarlo temporalmente pero no he podido dedicarle todo el tiempo necesario.
Te mantendré informado si avanzo…espero que en la release esto esté solucionado
28 octubre 2010 a las 15:50
Buen Día, estoy haciendo un ejemplo sencillo sobre Spring roo (http://abaddon-gtz.blogspot.com/2010/01/primeros-pasos-con-spring-roo-en-spring.html), y todo funciona perfectamente, pero a la hora de ir a la opción de “Nueva Persona”, me da el siguiente mensaje “Recurso Solicitado No Encontrado”, les escribo por aquí, para ver si me pueden ayudar.
Muchas Gracias!!!!
26 diciembre 2010 a las 18:50
Hola, mi principal problema es que me gustaría renombrar las entidades creadas al estilo de Java. Haciéndolo con Refactor de STS, los aspectos no se recrean, y fallan muchas cosas…
Hay alguna manera de hacer este renombre y que se recreen los aspectos con los nuevos nombres?