This week's book giveaway is in the OCAJP forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide 1Z0-808 and have Jeanne Boyarsky & Scott Selikoff on-line! See this thread for details.
There's a lot of interest in Java and object-database connectivity at the moment. The implementation you choose for your purpose would probably depend on your project and budget.
JDO is a Java standard and there are many JDO implementations available. This provides portability and customer security; if you need extra capabilities or features you can plug in a different implementation. Hibernate is open source and popular for simple projects, but is non-standard and lacks some of the OO query and performance features of JDO.
JDO is designed to provide you database agnostic access to data. It means that with the same API you can access data stored in a file system, relational database, XML files, etc.
Hibernate is designed for object relational mapping.
JDO provides a query language similar to java and Hibernate has a query language more similar to SQL. Both query languages are good for their proposal, but JDOQL provides more datastore abstraction.
The way JDO was designed is one concrete advantage of it over Hibernate. Hibernate uses reflection and JDO uses a PersistenceCapable interface + StateManager. This permits JDO be more scalable and performant.
JDO has a lot of implementations with relational database support. In relation to Hibernate some may provide better performance, and some worse. To be sincere, I've never benchmark side by side both technologies.
I'm a developer of a JDO implementation, JPOX. It's open source and can be found at http://www.jpox.org
Regards, [ October 14, 2004: Message edited by: Erik Bengtson ]