La persistance des objets est définie dans les métadonnées XML externes , qui peuvent comporter des extensions spécifiques au fournisseur. Les fournisseurs JDO mettent à disposition des développeurs des outils d'amélioration qui modifient les fichiers de classes Java compilés afin de permettre leur persistance transparente. (Il est à noter que l'amélioration du bytecode n'est pas imposée par la spécification JDO, bien qu'elle soit couramment utilisée pour répondre à ses exigences.) Actuellement, les fournisseurs JDO proposent plusieurs options de persistance, notamment vers un SGBDR , une base de données orientée objet ou des fichiers .
Les classes JDO améliorées sont portables entre les implémentations de différents fournisseurs. Une fois améliorée, une classe Java peut être utilisée avec n'importe quel produit JDO.
JDO s'intègre à Java EE de plusieurs manières. Premièrement, l'implémentation du fournisseur peut être fournie sous forme de services transactionnels JEE .
La spécification Enterprise JavaBeans 3.0 (EJB3) abordait également la persistance des données, tout comme EJB v2 avec les Entity Beans . Des conflits de normes ont opposé les deux organismes de normalisation quant à la prééminence de chaque norme. JDO compte plusieurs implémentations commerciales.Finalement, la persistance a été dissociée du noyau EJB3 et une nouvelle norme a été créée : l’ API de persistance Java (JPA). JPA utilise le javax.persistencepackage et a d’abord été spécifiée dans un document distinct de la spécification EJB3 (JSR 220) , avant d’être déplacée vers sa propre spécification (JSR 317 ). Point important, JPA javax.persistencene nécessite pas de conteneur EJB et fonctionne donc également dans un environnement Java SE, comme l’a toujours fait JDO. Cependant, JPA est une norme de mappage objet-relationnel (ORM), tandis que JDO est à la fois une norme de mappage objet-relationnel et une norme de persistance d’objets transparente. Du point de vue de l’API, JDO est indépendant de la technologie du système de stockage de données sous-jacent, tandis que JPA est conçu pour les bases de données relationnelles (bien que plusieurs fournisseurs JPA, tels que DataNucleus et ObjectDB, prennent en charge l’accès aux bases de données non relationnelles via l’API JPA).
Les principales implémentations commerciales de JDO et les projets open source proposent également une implémentation d'API JPA comme alternative pour accéder à leurs moteurs de persistance sous-jacents, auparavant accessibles uniquement via JDO dans les produits d'origine. Il existe de nombreuses implémentations open source de JDO.
Nouvelles fonctionnalités de JDO version 2 absentes de la version 1
- Concept de graphes d'objets déconnectés
- Descripteurs de mappage ORM standardisés (pour les implémentations JDO basées sur ORM)
- Améliorations JDOQL (Formulaire à chaîne unique ; prise en charge accrue des méthodes String, Map et Math obligatoire)
- Obtenez par exemple un
JPOX 1.1 - JDO 2.1 : JPOX 1.2
- JDO 2.2 : Plateforme d'accès DataNucleus 1.0.1
- JDO 3.0 : Plateforme d'accès DataNucleus 2.1.0
- JDO 3.1 : Plateforme d'accès DataNucleus 3.2.0
- JDO 3.2 : Plateforme d'accès DataNucleus 5.2.0