For a very extensive comparison between seemingly all the O/R mapping tools known to mankind check this wiki page.
Perhaps a relevant observation: despite the zealoting, Toplink, OJB and Hibernate (by far _the_ most popular ORM-tool, and the basis for EJB3) all seem to offer roughly the same functionality. And actually, the XML configfiles also don’t look all that different to me either..
Some notable differences/facts:
- Hibernate has a big following, development continues at a rapid pace. Free, OS, but no GUI except for some crude 3rd party tool
- OJB has a JDO implementation, the other two have not (for what it’s worth, since the JDO movement seems to be running out of steam). Also OS and free as in beer. GUI under development.
- Toplink doesn’t support MySQL, PostgreSQL or SAP-DB like the other two. It does have a pricetag but also a nice GUI
You may like to read an interview with Dennis Leung, VP TopLink Development, dating back to January 2003, on TheServerSide: Hard Core Tech Talk with Dennis Leung, VP TopLink Development and perhaps even more the many discussion threads spun from this interview. JDO is discussed at length – and not very positively. There is also a pretty healthy stance from Rod Johnson on “Java-experts” ignoring the strengths of relational databases and database experts in order to “OO and EJB” the world.
There is also this MagpieBrain blog which discusses various persistency frameworks. Brian McCallister notes there: “The most common I see used, in order, are: EJB CMP, EJB BMP, Hibernate, OJB, TopLink, Various JDO impls, Cayenne, Cocobase (yes, people use this despite Warren). This is very informal and unscientific, however.”
I’m not convinced that JDO is running out of steam, although I certainly think that Hibernate’s popularity has posed some problems for them. Do you have any evidence to back up the claim, or is that just a hunch?
A comprehensive list of things you should compare:
http://blog.hibernate.org/cgi-bin/blosxom.cgi/Christian%20Bauer/relational/comparingpersistence.html
Just FYI, I started out a project with Hibernate. It either didn’t work at all or was terribly slow (depending on how it was configured). I switched to OJB and it ran much faster than expected. OJB doesn’t get the press it deserves.
I would suggest also looking at Kodo if you are examining commercial tools. I would argue with the “JDO movement running out of steam” comment simply because it is only now starting to gain any, from my perspective. Hopefully JDO 2 will solve the bigger problems in the spec, though the “too much is optional” may stick around. It has worked for JDBC, anyway.
A wonderful option going forward would be to have the EJB 3 persistence API’s extracted from the EJB spec — but then you have the exact scope of JDO, so =/ Political mess.
The bigger problem right now is that we need some API (right now it is 2.1 Entity Beans) which we can trust to exist fifteen years from now. None of the tools listed above meet that requirement. EJB will, and JDO might.
-Brian