12.07.2013 Views

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

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!