Using GORM standalone

Few days ago we decided to get rid of Apache iBatis in one of our projects. We couldn’t longer maintain large XML mapping and query descriptors with mix of Java, SQL and XML itself. But we also wanted to avoid switching to another ORM framework with lot of features and DAO layer requirement. We tried to implement some simple Spring JdbcTemplate-based ORM in Groovy, but it (strangely) started to look just like Hibernate… All that aliases in generated SQL’s, need to use javax.presistence annotations etc. The only simple existing solutions were Groovy’s DataSet (which is not working outside Groovy script) and GORM. Googling ‘GORM standalone’ show just few useful, but rather outdated, results. So I was forced to spend couple of hours to write desired 6 lines of code:

ExpandoMetaClass.enableGlobally()
        SessionFactory sessionFactory = ctx.getBean("sessionFactory")
        def grailsApp = new DefaultGrailsApplication([Customer.class] as Class[], null)
        grailsApp.initialise()
        GrailsHibernateUtil.configureHibernateDomainClasses(sessionFactory, grailsApp)
        HibernatePluginSupport.enhanceSessionFactory(sessionFactory, grailsApp, ctx)

And after annotating Customer class:

@Entity
@Table(name = "CUSTOMERS")
class Customer {
    String firstName
    String lastName
}

Now we are able to enjoy DAO-less code in pure Groovy:

Customer.findAll().each{ println it.firstName }         
        Customer.withCriteria { eq('lastName', 'Smith') }.each { Customer c -> println c.firstName }
        Customer.findByFirstNameAndLastName('John', 'Smith')

PS. For unknown reasons, these 6 lines work only with Grails 1.1.x

You May Also Like

33rd Degree day 3 review

At the last day of the conference, I've decided to skip the first presentations, and get some sleep instead. I was afraid that Venkat's show is going to be too basic, I will see Jacek Laskowski talking about closure at 4Developers, which I'm kind of s...

Touki na Confiturze 2013 – ciąg dalszy

Kolejna partia nagrań z konferencji została udostępniona. Wśród nich m.in. prezentacja Michała Trzaskowskiego o rozpoznawaniu oczekiwań klienta podczas prowadzenia projektu z wykorzystaniem ”zwinnych” metodyk projektowych oraz wystąpienie Macieja Próchniaka o możliwościach Slick, jednej z bibliotek w Scali.