Entreprise BeansEdit
La spécification EJB 3.0 (elle-même faisant partie de la plate-forme Java EE 5) comprenait une définition de l’API Java Persistence. Cependant, les utilisateurs finaux n’ont pas besoin d’un conteneur EJB ou d’un serveur d’applications Java EE pour exécuter les applications qui utilisent cette API de persistance. Les futures versions de l’API de persistance Java seront définies dans une JSR et une spécification distinctes plutôt que dans la JSR/spécification EJB.
L’API de persistance Java remplace la solution de persistance d’EJB 2.0 CMP (Container Managed Persistence).
Java Data Objects APIEdit
L’API Java Persistence a été développée en partie pour unifier l’API Java Data Objects, et l’API EJB 2.0 Container Managed Persistence (CMP). Depuis 2009, la plupart des produits prenant en charge chacune de ces API supportent l’API Java Persistence.
L’API Java Persistence spécifie la persistance uniquement pour les systèmes de gestion de bases de données relationnelles. Autrement dit, JPA se concentre sur le mappage objet-relationnel (ORM) (notez qu’il existe des fournisseurs JPA qui prennent en charge d’autres modèles de base de données que la base de données relationnelle, mais cela sort du cadre de ce pour quoi JPA a été conçu). Reportez-vous à l’introduction de la section 1 de la spécification JPA 2 pour clarifier le rôle de JPA, qui indique très clairement « L’objectif technique de ce travail est de fournir une facilité de mappage objet/relationnel pour le développeur d’applications Java utilisant un modèle de domaine Java pour gérer une base de données relationnelle. »
La spécification Java Data Objects prend en charge ORM, ainsi que la persistance vers d’autres types de modèles de bases de données, par exemple les bases de données de fichiers plats et les bases de données NoSQL, y compris les bases de données de documents, les bases de données de graphes, ainsi que littéralement tout autre datastore concevable.
Service Data Object APIEdit
Les concepteurs de la Java Persistence API visaient à fournir une persistance relationnelle, avec de nombreux domaines clés repris des outils de mappage objet-relationnel tels que Hibernate et TopLink. L’API Java Persistence a amélioré et remplacé EJB 2.0, comme en témoigne son inclusion dans EJB 3.0. L’API Service Data Objects (SDO) (JSR 235) a un objectif très différent de celui de l’API Java Persistence et est considérée comme complémentaire. L’API SDO est conçue pour les architectures orientées services, les formats de données multiples plutôt que les seules données relationnelles, et les langages de programmation multiples. Le Java Community Process gère la version Java de l’API SDO ; la version C++ de l’API SDO est gérée via OASIS.
HibernateEdit
Hibernate fournit un framework de mapping objet-relationnel open source pour Java. Les versions 3.2 et ultérieures fournissent une implémentation pour l’API Java Persistence. Gavin King a fondé le projet Hibernate. Il a représenté JBoss à la JSR 220, le groupe d’experts du JCP chargé de développer JPA. Cela a donné lieu à une controverse et à des spéculations permanentes sur la relation entre JPA et Hibernate. Sun Microsystems a déclaré que les idées provenaient de plusieurs frameworks, y compris Hibernate et Java Data Objects.
Spring Data JPAEdit
Une mise en œuvre de l’abstraction de référentiel qui est un élément clé de la conception pilotée par le domaine basée sur le framework d’application Java Spring. Prend en charge de manière transparente toutes les implémentations JPA disponibles et prend en charge les opérations CRUD ainsi que l’exécution pratique de requêtes de base de données.
.