RE: While I'm choosing Hibernate over JDO ... for now
Now I will talk to you about the dealbreaker - the one thing about JDO that pushed me pretty rapidly over to the Hibernate camp: the query language. The JDO query language is just poor, very poor and of a syntax that only the designer could appreciate.
Class gameObjectClass = com.foo.GameObject.class;
Extent oldObjects = pm.getExtent (gameObjectClass, false);
String filter = "age > 25";
Query q = pm.newQuery (gameObjectClass, oldObjects, filter);
Collection oldGameObjects = q.execute ();
This unfortunately gets more and more complex as you have to introduce other variables into the query. This is a major failing of JDO IMO. Hibernate was just so much easier to deal with from the query perspective (and since that's what you'll be spending most of your time doing...).
List oldObjects = sess.find( "from obj in class com.foo.GameObjects where age > 25" );
Big difference in both presentation, LOC and generally understandability in my opinion. [Nation of Greg :: Redux]
I have to agree with Greg here. Hibernate's query language (HQL) is extremely easy to use. In fact, I've been amazed at how I've been able to guess the syntax and get it right 9 times out of 10! It's the best of SQL and OQL. If you think HQL is good - wait until you checkout the Query by Criteria syntax (very cool IMO). There's supposed to be a Hibernate 2.0 Final this weekend... only 26 hours left in my neck of the woods.