Le mapping objet / relationnel n'est pas une technique nouvelle. Les premiers efforts en ce sens datent de la fin des années 1990, avec l'API EJB Entity 1.0. Cette API n'a pas rencontré le succès, probablement du fait qu'elle n'apportait pas de solution complète à la problématique posée. Sa lourdeur et ses mauvaises performances ne l'ont pas non plus aidée, et elle est rapidement tombée en obsolescence.
Quelques projets propriétaires ont également fait leur apparition à cette époque, notamment Toplink, qui existe toujours sont le nom d'EclipseLink. Toplink, à l'origine indépendant, a été tout d'abord racheté par BEA, puis pas Oracle, pour en devenir l'outil de mapping objet / relationnel.
Au début des années 2000, constatant l'échec des EJB Entity, une nouvelle API voit le jour : JDO (Java Data Object). L'API est publique, mais sans implémentation de référence gratuite. Plusieurs produits commerciaux permettent de l'utiliser, citons ici le français LiDo, et l'américain Kodo. JDO existe toujours (une version 3.0 est annoncée), mais ne fait pas partie du package JEE.
C'est également à cette époque qu'Hibernate apparaît, indépendamment de JDO et de tout processus de standardisation Java. Le fait qu'il soit le seul produit open source et gratuit de qualité industrielle sur le marché du mapping objet / relationnel, lui assure immédiatement un succès immense, et en fait en quelques années un standard de fait.
Devant ce succès, Sun décide de créer un nouveau standard JEE : JPA (Java Persistent API). JPA aura pour implémentation de référence une version gratuite de Toplink : Toplink Essentials. Oracle donne les fonctions de base de Toplink à la fondation Apache, tout en en conservant certaines parties, vendues sous licence payante. Rapidement, Oracle finira par donner l'ensemble de Toplink à la fondation Eclipse, sous le nom EclipseLink. Il s'agit toujours de l'implémentation de référence de JPA.
Bien qu'étant à l'origine du standard JPA, Hibernate n'en est pas l'implémentation de référence. Hibernate propose le support de JPA en v1 et v2, et reste massivement utilisé aujourd'hui.
Il existe actuellement trois implémentations principales de JPA :
-
EclipseLink, l'implémentation de référence ;
-
Hibernate, projet porté par JBoss, appartenant à RedHat ;
-
OpenJPA, projet de la fondation Apache.