I’m toying with the idea of phasing in an ORM into an application I support. The app is not very structured with no unit tests. So any change will be risky. I’m obviously concerned that I’ve got a good enough reason to change. The idea is that there will be less boiler plate code for data access and there for greater productivity.
Do this ring true with your experiences?
Is it possible or even a good idea to phase it in?
What are the downsides of an ORM?
I would strongly recommend getting a copy of Michael Feather’s book Working Effectively With Legacy Code (by ‘Legacy Code’ Feathers means any system that isn’t adequately covered by unit tests). It is full of good ideas which should help you with your refactoring and phasing in of best practices.
Sure, you could phase in the introduction of an ORM, initially using it for accessing some subset of your domain model. And yes, I have found that use of an ORM speeds up development time – this is one of the key benefits and I certainly don’t miss the days when I used to laboriously hand-craft data access layers.
Downsides of ORM – from experience, there is inevitably a bit of a learning curve in getting to grips with the concepts, configuration and idiosyncracies of the chosen ORM solution.
Edit: corrected author’s name