Etude exploratoire de Linq - CoDE - de l'Université libre de Bruxelles
Etude exploratoire de Linq - CoDE - de l'Université libre de Bruxelles
Etude exploratoire de Linq - CoDE - de l'Université libre de Bruxelles
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
6.3 Quelles alternatives<br />
Comme nous l’avions précé<strong>de</strong>mment fait remarquer, le problème <strong>de</strong> la dépendance par rapport au<br />
stockage <strong>de</strong>s données n’est pas nouveau. <strong>Linq</strong> y apporte sa contribution et nous avons résumé les<br />
principales techniques qui étaient utilisées à l’époque <strong>de</strong> la <strong>de</strong>uxième version <strong>de</strong> .NET. Mais qu’en<br />
est-il <strong>de</strong>s autres langages ? .NET n’a pas le monopole <strong>de</strong> l’orienté objet et <strong>Linq</strong> est résolument lié au<br />
framework. Il est impensable qu’un langage orienté objet tel que Java n’ait pas développé <strong>de</strong><br />
solutions <strong>de</strong> son crû pour tenter <strong>de</strong> créer davantage d’abstraction vis-à-vis <strong>de</strong> la couche <strong>de</strong><br />
persistance <strong>de</strong>s données. Nous allons maintenant nous pencher sur différentes technologies et leurs<br />
points communs avec <strong>Linq</strong>.<br />
6.3.1 Java<br />
Java reste une pointure dans le domaine <strong>de</strong>s langages <strong>de</strong> programmation orientés objet. En<br />
perpétuelle concurrence avec son grand rival .NET, leurs évolutions respectives se sont toujours plus<br />
ou moins suivies <strong>de</strong> près. Ainsi, les accès aux données relationnelles se faisaient via un pilote Odbc 15<br />
en C# 2.0 et Java 5 faisait <strong>de</strong> même avec Jdbc, pour sa part. Voyons maintenant quelles sont les<br />
solutions actuellement proposées pour réaliser une persistance abstraite en Java.<br />
6.3.1.1 JDO<br />
Les paragraphes consacrés à l’étu<strong>de</strong> <strong>de</strong> JDO sont presqu’entièrement inspirés <strong>de</strong> *8+ et <strong>de</strong> la<br />
documentation qui s’y trouve. JDO est l’acronyme désignant Java Data Object. Il s’agit d’une librairie,<br />
plus exactement d’une API, standard pour réaliser la persistance <strong>de</strong>s objets. La première version <strong>de</strong><br />
JDO est apparue en 2002 et la secon<strong>de</strong> version est disponible <strong>de</strong>puis 2006. Comme presque tout ce<br />
qui concerne Java, cette librairie est open source. La version 2.1 appelée aussi Apache JDO est<br />
toujours en cours <strong>de</strong> développement à l’heure où ces lignes sont écrites. Cette librairie est décrite<br />
comme supportant tout type <strong>de</strong> stockage et représentant les données stockées à l’ai<strong>de</strong> <strong>de</strong> POJO<br />
(Plain Old Java Object), ce qui pourrait se traduire par <strong>de</strong> bons vieux objets Java. JDO se décline en<br />
plusieurs interfaces, comme le fait <strong>Linq</strong>, et ces implémentations permettent d’utiliser différents<br />
stockages <strong>de</strong> données parmi lesquels <strong>de</strong>s bases <strong>de</strong> données relationnelles, objet ou Xml, un système<br />
<strong>de</strong> fichiers ou même certains stockages plus exotiques comme les bases <strong>de</strong> données Big Table <strong>de</strong><br />
Google 16 .<br />
JDO présente la persistance du point <strong>de</strong> vue du développeur objet, <strong>de</strong> manière transparente. Pour<br />
décrire brièvement les classes qui entrent en jeu, nous avons un gestionnaire <strong>de</strong> persistance, <strong>de</strong>s<br />
requêtes et <strong>de</strong>s transactions. Le gestionnaire est responsable <strong>de</strong> la maintenance <strong>de</strong>s instances <strong>de</strong><br />
persistance qui ne sont en fait que l’équivalent <strong>de</strong>s entités en mémoire au sens <strong>de</strong> <strong>Linq</strong>. Le<br />
gestionnaire est également chargé d’exécuter les requêtes et transactions qui lui sont passées. Le<br />
principe est, sur le fond, très similaire à <strong>Linq</strong> to Sql : nous avons un gestionnaire <strong>de</strong> contexte qui gère<br />
<strong>de</strong>s entités persistantes. Pour interroger les sources <strong>de</strong> données, JDO a recours à un langage qui lui<br />
est propre, le langage JDOQL. Cet acronyme est l’abréviation <strong>de</strong> Java Data Object (JDO) Query<br />
Language et n’est pas directement lié à OQL comme nous pourrions l’imaginer. Il est intéressant <strong>de</strong><br />
noter que ce langage propose <strong>de</strong>ux syntaxes alternatives, la syntaxe dite déclarative et celle dite du<br />
Single String. Pour ne pas trop nous perdre dans l’analyse <strong>de</strong> toutes les possibilités syntaxiques, nous<br />
allons simplement examiner cela avec un exemple tiré du site officiel du projet Apache JDO [8], situé<br />
page suivante.<br />
15 Il existe d’autres pilotes plus anciens, odbc était le <strong>de</strong>rnier en date lors <strong>de</strong> la release <strong>de</strong> C# 2.<br />
16 Ceci est mentionné à l’adresse suivante : http://db.apache.org/jdo/impls.html