Grails Database Reverse Engineering Plugin

Support for database migrations and reverse engineering are two related features that we’ve scheduled for Grails 1.4/2.0 (see the roadmap wiki page for the others). The migration support will be based on Liquibase and there’s already a plugin for that so I started looking at reverse engineering first.

Work progressed faster than I expected (thanks to the features of the Hibernate Tools library and all of the time I spent digging into its internals for the App Info plugin) and it didn’t depend on any new features in 1.4 (not yet anyway) so I released the plugin yesterday so users can started using it now. Install it the usual way:

grails install-plugin db-reverse-engineer

and refer to the documentation for configuration options.

I tested this with MySQL and Oracle, and other databases that Hibernate supports should work too. There’s a tutorial in the documentation that uses MySQL, and you can use the Chinook database to test with Oracle. I used these settings (in grails-app/conf/Config.groovy) for the Chinook database:

grails.plugin.reveng.packageName = 'com.codeplex.chinookdatabase'
grails.plugin.reveng.defaultSchema = 'CHINOOK'
grails.plugin.reveng.manyToManyBelongsTos = [PLAYLISTTRACK: 'PLAYLIST']

and these datasource settings (in grails-app/conf/DataSource.groovy)

dataSource {
   url = 'jdbc:oracle:thin:@localhost:1521:orcl'
   driverClassName = 'oracle.jdbc.driver.OracleDriver'
   username = 'chinook'
   password = 'p4ssw0rd'
   dialect = org.hibernate.dialect.Oracle10gDialect
}

Try it out and report any issues on the Grails user mailing list or in JIRA.


One related thing I wanted to point out is that the work to replace HSQLDB with H2 is mostly complete (JIRA issue here). I’m a big fan of H2 and one of its coolest features is its embedded web-based console (which works with any database that has a JDBC driver). This is now enabled by default in the development environment and can be enabled in other environments. Accessing data in your development database will be very convenient in 1.4 – just open http://localhost:8080/appname/dbconsole in a browser (JIRA issue here).

8 Responses to “Grails Database Reverse Engineering Plugin”

  1. [...] información sobre Grails Database Reverse Engineering Plugin (traducido al [...]

  2. [...] An Army of Solipsists » Blog Archive » Grails Database Reverse Engineering Plugin [...]

  3. Lauro says:

    Hi, Burt

    I guess you should change “the documentation” link to
    https://github.com/grails-plugins/grails-db-reverse-engineer.

    Cheers,

  4. Kyle says:

    I am having a lot of trouble getting the Hibernate Tools installed for various reasons (Indigo not supported yet, getting exceptions in Helios).

    Do you have recommendations for how to get this to work from command line?

    I get the following error when trying to install this plugin from the command line: http://screencast.com/t/6fAPjJI81wW. I have not been able to find a good download source for these dependencies and wish they were automatically included by the install plugin command.

  5. Alex Lee says:

    I tried “grails install-plugin db-reverse-engineer” but got a few “unresolved dependencies”:
    :: org.hibernate#hibernate-tools;3.2.4.GA: not found
    :: freemarker#freemmarker;2.3.8: not found
    :: org.beanshell#bsh;2.0b4: not found
    :: org.hibernate#jtidy;r8-20060801: not found

    I am using Groovy 1.8, Grails 1.3.7. Any idea how to fix this?

    Thanks!

    Alex

  6. Bill Koch says:

    @Kyle @Alex,

    I think uncommenting mavenCentral() from BuildConfig.groovy will allow you to pull down the dependencies.

Creative Commons License
This work is licensed under a Creative Commons Attribution 3.0 License.