|
| 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