Logo du groupe IPSI

Investigations 

Liste des investigations


Dossier : État des technologies de stockage d'objets en Java

Bienvenue !
Aide
Table des matières

Section :

1 2 3 4 5 6 7 8 9 10
Standards
ODMG

Java Database
Connectivity


Open Database
Connectivity


Java Serialization
et Java Core
Reflexion


Remote Method
Invocation


Java Naming and
Directory Interface


Common Object
Request Broker
Architecture et JIDL


Kona Infobus
(Lotus)


Distributed Component
Object Model

Section 3
Standards
Java Serialization et Java Core Reflexion


Java Object Serialization est la première composante d'une architecture de persistance. Elle permet d'écrire un objet dans un Stream et de le reconstituer. Java Serialization gère deux aspects délicats de la sérialisation:

  • L'écriture d'un objet quelconque implique l 'écriture de tous les objets reliés. Les références entre les objets forment un graphe dirigé et il est nécessaire d'éviter de réÈcrire deux fois un objet accessible par plusieurs objets de référence (cette contrainte n'existe pas tant pour réduire le stockage que pour assurer l'intégrité du graphe des pointeurs entre les objets à la relecture).
  • Entre l'écriture et la relecture de l'objet, la classe de l'objet peut avoir évolué. Même sans information sur cette évolution, les processus automatiques de Java Serialization tenteront de préserver l'intégrité de l'information stockée. Il est possible de raffiner ce processus en spécifiant soi-même les protocoles de sérialisation/désérialisation.

Par contre, la famille d'objets est stockée de façon continue, et il n'est pas question de faire référence à un objet autrement que dans l'ordre de sérialisation. L'utilisation des mécanismes de Java Serialization dans le contexte d'une base de données nous semble donc problématique.

À l'inverse, par contre, il serait sans doute possible de donner à une base de données objets, l'interface d'un stream de sérialisation d'objets, de façon à ce que le processus de sérialisation stocke des objets de structure inconnue dans la base de données et gère les questions de connexions entre les objets. L'interface de désérialisation est trop pauvre pour rendre une telle approche réellement intéressante pour les clients mais il reste que les mécanismes de sérialisation donnent un aperçu de la structure d'un objet inconnu dont une base de données pourrait faire usage.

Bien sûr, pour atteindre un tel but il serait beaucoup plus simple et pratique d'utiliser l'API de réflexion de Java, qui permet d'interroger la méta-classe d'un objet sur ses champs publics (ainsi que sur ses méthodes, ce qui est en dehors du propos). Toutefois, les restrictions de sécurité des mécanismes de réflexion (parfois également nommés mécanismes d'introspection) limitent probablement l'intérêt d'un tel mécanisme pour une base de données.


 


 HAUT Mise à jour de ce document - 12 novembre 1997