With all this buzz about the new specification for J2SE/J2EE persistence, a long time thought came back and started again moving around through my braincells. Once in a while, at the beginning of a new project, you must go again over your experience memories, browse a little bit to replace the broken links and answer for the x-time at the same question: what solution should I choose for persistence?
From pure JDBC, passing through ORMs and finishing with JDO and CMP you have each time quiet a lot of options. But each and every time you should answer the question:
Which one fits best my current problem?
Maybe each time you have just a few to take out and decide upon. But sure you will have 2 (or 3) semifinalists! And now my question is how should I decide? On what metrics should I base my decision?
I quick answer would be: on your experience. But what if there is no experience for this kind of problem? Wouldn’t be nice to have a place where to find out how other people passed through this decision chain? (I would surely love such a place!). An experienced guy should come out screaming: You have such a place (at least something that looks very much alike). Go check Object Relational Tool Comparison.
Another possible answer would be: use this simulation/testing framework, configure it for the problem and analyse the results. But as many guys involved in this field already suggested, this is not always relevant.
A third answer would be: choose between the semifinalist the one that best fits your team knowledge (this is for the cases when the time frames are short – hey where are those projects with good time frames?)
One could say: “Base your decision on common sense? You cannot go with CMP for 10 tables or you shouldn’t go JDBC for 250 tables!”. Yes, I know. But in too many cases these are not the real numbers.
At the end I would like to confess: (for me) every time the semifinalist are
I prefere Hibernate in many situations as I have much successfull experience with it (but I don’t rely my decisions on my feelings). I like iBatis as it is very intuitive. I know a few good JDO solutions. I know I am not going to reinvent the wheel. And I do believe that sometimes JDBC can be the solution.
Wouldn’t you say that this is a hard decision? And now I will scream out loud: guys give me your hints. I will place them in my knowledge base and never ask this again! (after this I will rest my persistence braincells).
PS: wow I’ve lost the number of each and every I have used. So I would bring them to the same level: each, each, each and one every. Now they are equal. [smile/]