We have a recurring problem in our shop where we end up with 3 or 4 different representations of the same class/entity.
A java version, an xml version, a hibernate version, a json version... you get the point.
Obviously this creates maintenance problems.
Model driven architecture is probably more than this, but what I'd really like is a system that lets me define a class or an entity once, in one way, and then generate various representations. (maybe I am not using the correct terminology for this)
It really isn't that straight forward, of course, because let's say we have a java object that we want to turn into JSON for sending over the wire - there might not be an exact 1-1 correspondence between the members in the java object to the fields in JSON - there might be some optimizations, or whatever.
I've looked at things like AndroMDA and EMF in the past, and found them either lacking or clumsy. I do not know how they stack up these days, or what other systems there are.
What are SO's opinions on MDA and or meta-data driven programming? Have the tools become mature enough for serious consideration?
Thanks.
As a contributor to both Naked Objects and Apache Isis, I can confirm the other answer from @dnellis74 given that these both address the issue of having multiple representations of the same thing; with these frameworks you write your domain object once, and then it is reflected automatically to the user as a persistence layer.
Of course, (and I would say this, wouldn't I?) I don't agree with @dnellis74 that the fact that these frameworks are little known means that they should be dismissed out of hand; you should decide for yourself.
One other point that might be of interest; both these frameworks are in the process of implementing the Restful Objects spec, which aims to expose your domain objects automatically via a RESTful API, and let you skin it or integrate with it as you see fit. The .NET impl is pretty complete, the Java impl is lagging a bit but even so has a demo that you can check out.
As for MDA, I was sceptical from the outset when it was first being tauted by the OMG, to the extent that I wrote an article about it on TheServerSide. I think I called it right.
Dan
To address your core concern, you can define a Java class for your domain object. Then, you can annotate the class with JAXB and Hibernate annotations. This way you have a single definition of your entity(the Java class) that can be output in various representations, JAXB for JSON and XML, Hibernate for persistence.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With