Skip to content

Commit fb12aab

Browse files
committed
New post: RESThub 2 preview.
To be reviewed.
1 parent 1f01418 commit fb12aab

File tree

1 file changed

+140
-0
lines changed

1 file changed

+140
-0
lines changed
Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
---
2+
layout: post
3+
title: Un aperçu de RESThub 2
4+
author: lfrering
5+
tags: [resthub, java]
6+
published: false
7+
---
8+
9+
# RESThub 2
10+
11+
Après la [sortie récente de RESThub
12+
1.1](http://pullrequest.org/2011/06/28/resthub-1-1.html), nous
13+
commencons à étudier les nouveautés que nous souhaiterions intégrer à
14+
RESThub 2.
15+
16+
## Spring 3.1
17+
18+
Tout d'abord, RESThub 2 se basera sur Spring 3.1 et essaiera de tirer
19+
parti des nombreuses fonctionnalités amenées par cette nouvelle version.
20+
La première nouveauté de Spring 3.1 dont profitera RESThub 2 sera la
21+
possibilité de configurer entièrement votre application Spring en Java.
22+
Ainsi tous les élément de configuration de l'ApplicationContext mis à
23+
disposition par RESThub auront un équivalent en annotation du type
24+
@Enable\* comme @EnableEntityScan. Pour plus de détails sur la
25+
configuration en Java de Spring, je vous invite à consulter [cet
26+
article](http://blog.springsource.com/2011/06/10/spring-3-1-m2-configuration-enhancements/)
27+
sur le blog de Spring Source.
28+
29+
La seconde fonctionnalité apportée par Spring 3.1 dont RESThub 2 tirera
30+
profit est la notion de profils Spring. Avec Spring 3.1, il est possible
31+
de définir des ensembles de beans différents en fonction d'un profil
32+
donné qui peut être défini au runtime. A l'instar des profils Maven,
33+
plusieurs profils peuvent être activés simultanément. Nous envisageons
34+
quelques pistes d'utilisation des profils sur RESThub : nous pourrions
35+
établir un profil dédié au monitoring ou bien même différents profils
36+
RESThub pour différentes sources de données :
37+
38+
* jpa pour les bases de données relationnelles
39+
* mongodb pour les bases MongoDB via Spring Data
40+
* ogm pour Hibernate OGM
41+
42+
Pour terminer sur les profils Spring, nous évaluerons la pertinence de
43+
leur utilisation pour les environnements de déploiements (local, dev,
44+
qualif, prod) et leur intégration avec la gestion des profils Maven.
45+
46+
Une autre nouveauté que nous souhaitons exploiter concerne la nouvelle
47+
option packagesToScan du LocalContainerEntityManagerFactoryBean pour
48+
remplacer les options include-entities et exclude-entities du namespace
49+
RESThub. En effet cette option devrait permettre à présent de scanner
50+
les entités venant du classpath et donc de favoriser la création de
51+
projets multi-modules. Cependant il reste à voir s'il sera possible de
52+
gérer plusieurs persistence units via cette option, configuration que
53+
supporte RESThub actuellement avec son implémentation native du scan
54+
d'entités.
55+
56+
Enfin nous verrons comment tirer parti de la nouvelle couche
57+
d'abstraction pour le cache de données apportée par Spring 3.1. Elle
58+
pourrait permettre la mise en cache des données rappatriées par des
59+
finders avec des stratégies de rétention configurables via une simple
60+
annotation.
61+
62+
## Spring Data
63+
64+
RESThub 1.x repose sur Hades pour la couche d'accès aux données. C'est
65+
Hades qui fournit l'implémentation de base des GenericDao proposés par
66+
RESThub. Or le lead developer de Hades, Oliver Gierke, a été débauché
67+
par Spring pour participer à l'initiative [Spring
68+
Data](http://www.springsource.org/spring-data) qui regroupe un ensemble
69+
de projets facilitant l'implémentation de votre couche d'accès aux
70+
données sur tout un ensemble de technologies de persistance, allant des
71+
bases relationnelles avec Spring Data JPA aux bases NoSQL avec par
72+
exemple Spring Data Redis, Neo4j, MongoDB.
73+
74+
Ainsi RESThub reposera principalement sur Spring Data pour l'accès aux
75+
données et en particulier Spring Data JPA qui est le successeur d'Hades.
76+
Nous tirerons donc partie des dernières fonctionnalités apportées par
77+
Spring Data JPA pour simplifier encore la mise en oeuvre de la couche
78+
d'accès aux données.
79+
80+
Enfin, comme signalé plus haut, nous faciliterons le support des bases
81+
NoSQL via l'intégration des autres projets du portfolio Spring Data.
82+
83+
## QueryDSL
84+
85+
Si vous avez déjà utilisé les API Criteria JPA2, vous savez certainement
86+
la lourdeur de mise en oeuvre de celles-ci ainsi que leur verbosité.
87+
[QueryDSL](http://www.querydsl.com/) propose une interface fluide (ou
88+
fluent API) pour la construction dynamique et typée de requêtes JPA, JDO
89+
ou SQL en Java.
90+
91+
D'autre part Spring Data JPA s'intègre dans ses dernières versions avec
92+
QueryDSL et il nous semble très intéressant d'intégrer cette technologie
93+
à la prochaine version de RESThub tant elle facilite et rend agréable
94+
l'écriture et la construction de requêtes dynamiques tout en permettant
95+
un refactoring aisé de celles-ci au besoin.
96+
97+
## Monitoring
98+
99+
Nous souhaitons intégré dans RESThub le support de JMX dans Spring.
100+
Couplé avec les profils Spring 3.1, RESThub pourrait grandement
101+
faciliter le monitoring de vos applications : il suffirait d'activer un
102+
profil 'monitor' par exemple pour bénéficier automatiquement du
103+
monitoring JMX pour votre application RESThub.
104+
105+
## Rapid Application Development
106+
107+
Avec RESThub, nous souhaitons mettre à disposition des développeurs Java
108+
une stack de technologies cohérentes dont la mise en oeuvre est
109+
simplifiée au maximum. Nous souhaitons aller encore plus loin dans cette
110+
démarche et s'inspirer du principe
111+
[YAGNI](http://fr.wikipedia.org/wiki/YAGNI) avec RESThub 2 en proposant
112+
des profils de configuration limitant le nombre de couches logicielles
113+
lorsque cela n'est pas nécessaire. Ainsi il serait possible de très
114+
rapidement mettre en place des applications Web en se passant du code
115+
superflu inutile.
116+
117+
## Roadmap
118+
119+
Une version alpha de RESThub 2 est prévue pour les prochaines semaines.
120+
Elle se basera sur la branche
121+
[spring-data](https://github.com/pullrequest/resthub/tree/spring-data)
122+
actuellement en développement et apportera donc l'intégration de Spring
123+
Data JPA en remplacement de Hades.
124+
125+
Nous prévoyons ensuite de sortir une nouvelle alpha par fonctionnalité
126+
intégrée avec en feuille de route prévisionnelle :
127+
128+
1. Intégration de QueryDSL
129+
2. Support de Spring 3.1
130+
3. Java-based configuration
131+
4. A planifier...
132+
133+
N'hésitez pas à nous donner votre avis sur ce que nous prévoyons
134+
d'intégrer dans RESThub 2 ainsi qu'à nous proposer les fonctionnalités
135+
que vous aimeriez voir arriver avec cette prochaine version !
136+
137+
D'autre part RESThub est un projet ouvert au contribution alors
138+
n'hésitez pas à [cloner le projet sur
139+
Github](https://github.com/pullrequest/resthub) et à proposer des **pull
140+
request** !

0 commit comments

Comments
 (0)