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.
|