TUTORIELS 
La persistance objet
JDNet Développeurs décrypte ce concept essentiel de la logique objet: définition, utilité, implémentation. Questions-Réponses.  (9 avril 2003)
 
> Définition
La durée de vie d'un objet (au sens informatique du terme) peut dans certains cas correspondre au besoin de celui-ci d'exister au delà du temps d'exécution du programme qui l'a créé, l'adresse de l'objet "dans l'espace" pouvant changer par rapport à son adresse de création. La persistance est ainsi le fait "d'exister dans le temps". Un objet qui reste en l'état quand il est sauvegardé puis chargé par une autre application, ou à un moment éloigné, possède la propriété de persistance. En conséquence, l'objet n'est plus dépendant de l'application qui l'a créé.

> Pourquoi ?
La logique des ordinateurs veut qu'un objet ne puisse survivre à son créateur: un programme que l'on ferme perd les informations qui y sont entrées, un ordinateur que l'on éteint perd les données stockées dans sa mémoire vive. Pourtant, la persistance se révèle obligatoire pour des applications où l'information doit transiter d'une application à une autre, ou être accessible (et inchangée) à n'importe quel moment. On obtient ce résultat en faisant une sauvegarde des données.

> Spécificités
Il en est autrement dans la logique "tout objet", où l'on préfère déclarer un objet comme persistant, le reste étant pris en charge automatiquement (selon le langage utilisé). L'objet persistant ne faisant pas référence à un fichier, il faut sauver sur le disque la classe avec l'objet. Il est quasiment nécessaire de passer alors par une base de données objet.

> SGBD relationnel ou objet ?
En effet, si un SGBD relationnel peut suffire quand le nombre d'objets persistants est faible, les performances s'écrouleront si l'on doit travailler avec un très grand nombre d'objets, comme c'est rapidement le cas dans les applications d'envergure.

Le SGBD objet permet non seulement de faciliter une interface propre avec le langage de programmation, mais surtout d'être (le plus souvent) bien plus rapide que son homologue relationnel, tout en conservant la flexibilité de ce dernier dans l'implémentation rationnelle en termes d'évolution de schéma.

Il faut cependant bien reconnaître que les bases de données relationnelles sont encore la technologie de stockage prédominante de nos jours. Le problème revient donc à construire une sorte de "pont" entre ces deux logiques.

> Rapprochements
Le concept de persistance est fortement lié à celui de sérialisation d'objet en Java, et n'est pas à rapprocher de celui des sessions (comme en PHP - en effet, l'objet est perdu entre deux sessions...).

Par ailleurs, la persistance renvoie à une série de composants qui, au sein d'un serveur d'applications, assurent les liens entre les objets métier relatifs à la couche applicative de la solution et les données qui lui sont associées au sein de la base de données sous-jacente.

> Persistance & plates-formes
J2EE propose depuis longtemps un modèle de composants prédéfinis (les EJB Entities) conçu pour faciliter la mise au point de cette couche de persistance. L'équivalent des EJB Entities pour .Net est encore en chantier. Nom de code: Objectspaces. Ces deux environnements sont-ils aussi performants sur ce terrain ? C'est difficile à dire... Sur ce sujet, les débats vont bon train parmi les développeurs. Il semble en tous cas que les modèles pré-définis, tels que les EJB, ne soient pas toujours à la hauteur des performances attendues.

 
[ Xavier Borderie,JDNet
 
Accueil | Haut de page