18/03/2005

Les fonctionnalités de JDO

JDO offre les fonctionnalités suivantes (la liste n’est pas exhaustive)


  • Basés sur des standards
  • Portable
  • Le choix du système de stockage,
  • La manipulation d’objets simples : POJO
  • Utilisable dans un environnement standalone
  • Utilisable dans un environnement distribué
  • La simplicité de passer des tests unitaires et d’intégration
  • Requêtes dynamiques optimisées
  • Génération des clefs primaires
  • Supporte l’héritage, l’agrégation
  • Création automatique de schémas (top-down)
  • Support des schémas existants

Les types de classes JDO

JDO offre la persistance des objets définis via des classes. Il existe trois types de classes dans le jargon JDO :


  • Persistance Capable : Ce sont des classes dont les instances peuvent être persistées ou mappées à un système de stockage. Ces classes nécessitent une phase d’enhancement « perfectionnement » en partant d’un Meta-Data JDO, afin d’être utilisées dans un environnement JDO.
  • Persistance Aware : Ce sont des classes qui manipulent des classes de type Persistance Capable. Ces classes sont généralement enhancées sans avoir besoin d’un Meta-Data JDO
  • Classes dites normales, ce sont des classes qui ne sont pas persistables et n’entrent pas dans le processus de persistance.

17/03/2005

JDO

JDO offre une approche orientée objet et standardisée pour la persistance des objets Java. JDO cache les difficultés liées aux différences entre le monde objet et le monde relationnel. Cela permet au support des données d'être un SGBD relationnel, objet ou XML, ou utiliser toute autre forme d'enregistrement des données. De plus, les modifications à apporter au code sont minimes pour rendre des objets persistants.

JDO est conduit par le JSR 12 (Java Specification Request).

JD gère la persistance :


  • Transparente, ceci implique une indépendance entre les objets persistés ou à persister et les sources de données.
  • Universelle, ceci implique que JDO assure la persistance autant dans un SGBD, CICS, Fichiers Plats ou structurés, …

La version 2.0 a été récemment acceptée.

Les cas d'utilisation de la Persistance

Il existe plusieurs cas où l'on a besoin d'un mécanisme de persistance. Tous impliquent un modèle objet et un modèle de stockage :


  • top-down : le modèle objet existe (ou est imposé), et l'on souhaite générer modèle de stockage. Cela aboutit typiquement à une génération de schéma de base relationnelle à partir d'un ensemble de classes Java.
  • bottom-up : le modèle de stockage existe (ou est imposé), et l'on souhaite générer le modèle objet. Cela aboutit typiquement à une génération de classes Java à partir d'un schéma relationnel.
  • meet-in-the-middle : le modèle de stockage et le modèle objet existent (ou sont imposés), et l'on souhaite faire correspondre l'un avec l'autre.

Dans tous les cas, une formalisation de la correspondance (mapping) entre les 2 modèles devra être produite.

Le mythe de la Persistance

Les applications entreprise nécessitent la manipulation et la persistance de données.
La persistance permet d’enregistrer l’état d’une donnée ou d’un objet de manière permanente.
Il existe plusieurs solutions techniques capables de gérer cette fonctionnalité.


  • JDBC : Pour gérer la persistance, il est nécessaire de définir un mapping programmatif entre les colonnes des ResultSet et les propriétés des bases de données, sachant qu’il faut distinguer les types des propriétés. Il devient très intéressant pour des applications de très petites tailles. Pour des applications plus complexes, gérer la persistance avec JDBC alourdit la maintenance et les phases de tests et nécessite de fournir des efforts de développement considérables.
  • J2EE : La persistance via la plate-forme J2EE peut être gérée via des EJBs de type Entity-Bean. Ceci simplifie les choses mais bride le choix des technologies d’implémentation des composants. Il faudra peut-être attendre l’avènement des EJB 3.0.
  • Framework de persistance non-Standard : Ces frameworks sont généralement propriétaires et non-standard, l’inconvénient de l’adoption de ces frameworks est la dépendance vis-à-vis de leur APIs et la difficulté de migration vers un autre framework. Des exemples de ces frameworks seraient : Hibernate, TopLink …
  • JDO : Une API basées sur des interfaces qui standardisent l’implémentation de la persistance des objets. La persistance est transparente.