There's a blog posting here with a comparison of these
Java persistence technology choices here:
http://www.codefutures.com/weblog/corporate/archives/2005/02/data_persistenc.html Also, in relation to your question on ORM,
you should might like to read a blog entry on "Choosing a data persistence strategy":
http://www.codefutures.com/weblog/andygrove/archives/2005/01/choosing_a_java.html I should point out that there's generally too much attention paid to the choice of Java persistence technology (e.g. Hibernate versus JDO) and not enough on the overall architectural strategy.
While using an ORM technology has benefits, you should also always consider using Data Access Objects - which will provide you with a level of independence from the technology choice (i.e. you can swap between ORM or
JDBC or whatever as appropriate). This might be useful:
http://www.codefutures.com/weblog/andygrove/archives/2005/02/data_access_obj.html