Do ORMs enable the creation of rich domain models?
- by Augusto
After using Hibernate on most of my projects for about 8 years, I've landed on a company that discourages its use and wants applications to only interact with the DB through stored procedures.
After doing this for a couple of weeks, I haven't been able to create a rich domain model of the application I'm starting to build, and the application just looks like a (horrible) transactional script.
Some of the issues I've found are:
Cannot navigate object graph as the stored procedures just load the minimum amount of data, which means that sometimes we have similar objects with different fields. One example is: we have a stored procedure to retrieve all the data from a customer, and another to retrieve account information plus a few fields from the customer.
Lots of the logic ends up in helper classes, so the code becomes more structured (with entities used as old C structs).
More boring scaffolding code, as there's no framework that extracts result sets from a stored procedure and puts it in an entity.
My questions are:
has anyone been in a similar situation and didn't agree with the store procedure approch? what did you do?
Is there an actual benefit of using stored procedures? appart from the silly point of "no one can issue a drop table".
Is there a way to create a rich domain using stored procedures? I know that there's the posibility of using AOP to inject DAOs/Repositories into entities to be able to navigate the object graph. I don't like this option as it's very close to voodoo.