JDO is a fairly good solution for standard object persistence that offers portability across data storage paradigms and products. JDO has the ability to transparently persist graphs of objects including inheritance and implementation hierarchies, in a way similar to an ODBMS but with the advantages of a standard API and a pluggable (potentially non-object oriented) data store. Despite this JDO is not flawless and it failed to achieve widespread support from the large database companies. The final blow came from SUN itself under the pretext that the existence of two different data persistence models in EJB and JDO caused confusion and debates among Java developers, and is not in the best interest of the Java community. A letter from SUN states that maintenance improvements of JDO are still possible but the future standardization efforts will be towards a single POJO (Plain Old Java Object) persistence model under the tailoring of the JSR-220 Expert Group (EJB 3.0).
So if you are already using a JDO product you can safely continue using it, at least until the new EJB3 is adopted and you could make a migration. On the other hand if you are developing a new product you could have a look at the EJB3 persistence specification early drafts. Hibernate (http://www.hibernate.org) already provides support for EJB3 annotations in their 3.0 release. Either way Sun has a FAQ on persistence issues you might want to read.