This was a long war in the past years. The JPA won, as a consequence that becomes standard in EJB3.
I don't want to start a flame on that, there are a lot of differences between them.
My conclusion on why JPA won are:
- JPA is much simpler than JDO
- JDO can to persist in any type of repository, JPA only in relational databases, BUT the relational databases are the most frequent cases so it is a calculated compromise
- JPA uses annotations a lot (now DTO uses at well, but in war time that was not the case)
- JPA covers the topics of object mapping which are very clear conceptually, JDO has still a lot of functionalities which are not very flexible or too specific
- JPA had at that time support of the biggest software vendors of persistence layers and RDBMS like: Oracle (TopLink, OracleDB) and RedHat (Hibernate)
Thank you Aurelian for this clearly stated answer.
I agree the items
1.JPA covers the topics of object mapping which are very clear conceptually, JDO has still a lot of functionalities which are not very flexible or too specific
2.JPA is much simpler than JDO
3.Hibernate support is big plus [i have doubts on toplinks contribution]
have contributed alot in this victory [since it was a war i thought victory would be a convinient word here]
- JPA uses annotations a lot [after all Hibernate was very popular while only-XML config based so i have doubts on this]
I wish a seperate book on JPA is published.This absence creates a feeling that JPA is not a topic of interest/importance.
As far as I can see the JPA topic is covered in EJB/Hibernate books but a dedicated JPA book is missing.
A book titled Pro JPA is coming as far as I can see from amazon.