Conception d’un client Eclipse RCP et serveur OSGI avec Spring DM [step14]
Dans le billet précédant [step13] nous avons mis en place l’application RCP qui fait appel au service UserService pour afficher la liste des Users dans une View via Spring DM. Cette liste provient du bundle Implémentation service org.dynaresume.services.impl qui retourne une liste de User statique créées en dur en Java.
A partir de ce billet, nous allons utiliser une base de donnée constituée d’une table T_USER qui contiendra la liste des User qui sera récupérée par le service UserService. Notre implémentation Service UserServiceImpl fera appel à un bundle DAO (Data Access Object) encore appelé Repository qui s’occupera de récupérer la liste des Users d’une base de donnée.
Voici un schéma grossier de ce que nous allons mettre en place dans les billets futurs :

Ce schéma montre que :
- la couche DAO utilisera JPA (Java Persistence API) l’API standard d’ORM (Object Relationnel Mapping).
- JPA étant une API, nous devons utiliser une implémentation de JPA dans notre DAO. Nous allons nous appuyer sur 2 implémentations JPA :
- JPA/Hibernate implémentation de JPA avec Hibernate.
- JPA/EclipseLink implémentation JPA avec EclipseLink. Cette implémentation qui est basé sur les sources de TopLink est une version adaptée au contexte OSGi, ce qui le rend facilement utilisable dans un contexte Eclipse RCP. EclipseLink a pour objectif d’implémenter JPA 2.0 (JSR 317).
- nous allons utiliser 2 base de données :
J’ai choisi ces 2 bases de données car elles ne nécessitent aucune installation (comme MySQL par exemple) et peuvent être utilisé en mode embarqué, autrement dit il suffit de placer dans le classpath le JAR de la base de donnée pour l’utiliser.
Avant de démarrer les billets futurs nous devons télécharger les JARs (H2, Derby, JPA, EclipseLink, JPA/Hibernate). Pour cela, jJ’ai décidé d’utiliser Maven. Dans ce billet je vais expliquer comment utiliser Maven pour télécharger nos JARs requis. Dans les prochains billets, j’expliquerais ce qu’est JPA puis ce que peut apporter Spring dans un contexte JPA. Je montrerais ensuite comment utiliser JPA dans un contexte OSGi à l’aide de Spring DM et ce que peut apporter OSGi (changer de base, changer d’implémentation JPA… sans devoir redémarrer l’application RCP).