A couple comments on CarrierWave and SDO.
And some of my own:
One thing to note is that it was a primary goal behind the design of CarrierWave to decouple presentation and business behaviors. I've always found it the role of O/R tools to decouple business and persistence behaviors. Hibernate might be looking for trouble by trying to solve both.
One of my biggest reasons for decoupling presentation and business behaviors is to support scalable development teams. A JSP guy shouldn't be waiting for a business object developer to write a method that sorts line items if it's necessary on the back end. The line CarrierWave draws can't be crossed without a conscious effort so teams can work independently and concurrently (dependencies are less likely to be political).
A neat thing about SDO is that it presents graphs in a type-less fashion. That is, you start with a model to manipulate the underlying structure of possibly typed elements.
CarrierWave gives you a graph of typed elements. But since it is an implementation of the Horizontal-Vertical MetaData pattern, you also have models to manipulate the graph. Actually, CarrierWave has three; GraphModel, DataModel, and DocModel. For managing nodes/vertices, rows/columns, and trees, respectively.
Additional notes on SDO.
Leave a comment