CF9 ORM and CFGroovy

As I've stated at various times and places, CFGroovy 1 (with Hibernate integration) has been superceded by the ORM functionality now available in ColdFusion 9 and soon to be available in Railo 3.  It has never been my intention to compete with the CFML vendors in the Hibernate space – without access to the engine internals there is simply no way I can do as good a job as the vendors.

As of today I am officially declaring CFGroovy 1 abandonware.

I still use CFGroovy 1 on a couple personal projects and at Mentor (where I work) we run our entire service tier on CFGroovy 1.  So it is by no means unsuitable for production deployment, but no new development should take place on it.  It does not run on CF9 without modifying your CF9 installation, and the same will be true of Railo when it supports Hibernate as well.  So you should assume that if you're upgrading a CFGroovy 1 application from CF7/8 to CF9, part of the upgrade process will be converting to CF9 ORM.  This is not nearly as difficult as you would expect – Groovy beans directly translate to persistent CFCs and your Groovy business logic can be encapsulated with CFGroovy 2 scriptlets.  Existing scriptlets (and non-persistent helper classes) should transfer without any modification.  The only exception is that CFGroovy 2 does not provide the concept of a Groovy classpath, but that's typically only required for entities.

CFGroovy 2 is not affected by this; it is alive and well and will continue to be supported, developed, and widely used for a long time.  As well as being all kinds of useful, it is a crucial part of upgrading CFGroovy 1 applications.

From this point on the term "CFGroovy" will refer specifically to what has until now been called CFGroovy 2.  The Hibernate integration is the only reason anyone should be using CFGroovy 1 as CFGroovy is superior in every way when you're only looking for scriptlet support.  It provides not only a richer environmental binding, it also supports arbitrary JSR-223 languages, will transparently bootstrap Groovy (via JavaLoader) if it's not on your classpath, provides hooks for CFML ORM (CFML, not just CF9) integration, and works in a significantly more streamlined and efficient fashion.

Comments are closed.