adam bien's blog

Convention over Configuration In The Persistence Layer Helps Only Green Field Projects 📎

My last post "You shouldn't compare Rails to Java EE 5, or JavaScript/Ruby to the Java language..." caused an interesting discussion in the artima forum. Bill Venners discusses the question whether "Convention Over Configuration" is only interesting for green fields projects.
In general Convention Over Configuration is of course interesting for all projects. In the new Java EE 5 convention over configuration together with dependency injection greatly simplifies the programming model. So already existing resources (JMS, DataSources, JCA), can be injected without the need for additional deployment descriptors. This feature is very useful and powerful for all projects (I will cover it in one of my next posts in detail).
On the other hand using the database as a metadata for UI generation is only useful for green field projects with no exlicit policies for the design and layout of the database (what is very unlikely, at least in bigger companies :-)). Especially this great feature in Ruby On Rails can be only used for new and very agile projects. In case you have already an existing database, it is probably not designed for this purpose, so you have still to override the default and provide your configuration (OR-mapping).

In this case Convention Over Configuration has no advantage and could become even dangerous (in case someone forgets to provide the mapping). If I review my last projects, I had often to deal with existing databases or strange enterprise policies regarding the naming of tables, columns or regarding the normalisation etc.

So just use the right technology for the challenges in your projects - there are still no silver bullets out there :-).