Les DAO (Data Access Object) ou repository des applications contiennent souvent de l’information importante sur la façon dont les donnĂ©es d’une base doivent ĂŞtre consultĂ©es. Cette information prend la forme d’une logique mĂ©tier qui est encodĂ©e dans un ou plusieurs langages, souvent un langage dĂ©claratif (SQL, HSQL, JPQL, etc.) et un langage impĂ©ratif (Java, Groovy, Scala, etc.).
Tester cette logique d’accès polyglotte peut s’avĂ©rer complexe et lent car ce type de test se prète mal aux techniques classiques de mock et nĂ©cessite plutĂ´t l’Ă©criture de tests d’intĂ©gration qui chargent une partie du contexte rĂ©el d’exĂ©cution. Par consĂ©quent, les tests de cette couche sont parfois dĂ©laissĂ©s, voire abandonnĂ©s.
Cet article se propose de vous montrer comment rĂ©aliser de tels tests, avec un niveau d’isolation suffisant pour la parallĂ©lisation dans un processus multithread, tout en essayant de trouver le meilleur compromis avec le temps d’exĂ©cution de chaque test. Ces tests sont prĂ©sentĂ©s dans une configuration très classique utilisant Spring et JPA/Hibernate.
L’implĂ©mentation utilise une base HSQLDB et quelques bibliothèques pour faciliter l’Ă©criture du code, en essayant de rester aussi lĂ©ger que possible. Les tests sont isolĂ©s pour que vous puissiez activer l’exĂ©cution parallèle du plugin Surefire de Maven au niveau des classes de test. Vous pourrez facilement dĂ©river l’implĂ©mentation nĂ©cessaire Ă isoler vos tests au niveau des mĂ©thodes si vous le souhaitez.
La plateforme Java EE conserve de nos jours encore une mauvaise rĂ©putation. Les fameux EJB 2 et conteneurs lourds dĂ©marrant en plusieurs minutes vous rappelleront quelques bons souvenirs. L’arrivĂ©e de Spring a ouvert la voie aux conteneurs lĂ©gers, Ă l’inversion de contrĂ´le, ou encore Ă l’injection de dĂ©pendances; et est devenue la solution de rĂ©fĂ©rence. Cependant, la plateforme Java EE a beaucoup Ă©voluĂ© entre temps.
Nous allons voir que Java EE 6 n’a maintenant rien Ă envier Ă Spring. Cette plateforme est devenue lĂ©gère et simple Ă prendre en main. Toutes les spĂ©cifications ne seront pas abordĂ©es en dĂ©tails. Nous parlerons plutĂ´t de conteneurs lĂ©gers et testables, de managed beans, d’EJB Lite, ainsi que des nombreux services et patterns offert par la plateforme. Nous terminerons par la spĂ©cification CDI et ses extensions portables, qui offrent de belles perspectives Ă la plateforme Java EE 6.

La revue de presse hebdomadaire des écosystèmes Java/JEE proposée par Xebia.
Actualité éditeurs / SSII
RIA
Le coin de la technique
Avec cette vidĂ©o vous allez dĂ©couvrir comment Kirk a procĂ©dĂ© lors de cet atelier pour identifier les points d’amĂ©lioration d’un système et la manière de les rĂ©soudre. Tout cela sans prĂ©paration initiale ni code source : du live optimizing !
Écoutez Ă©galement Lire la suite de cet article …

La prochaine session du Paris Scala User Group aura lieu jeudi 26 Janvier Ă 19h30 dans les locaux de Xebia.
Ă€ cette occasion, StĂ©phane Landelle nous Lire la suite de cet article …

La revue de presse hebdomadaire des écosystèmes Java/JEE proposée par Xebia.
Actualité éditeurs / SSII
EvĂ©nements de notre communautĂ© en France et Ă l’Ă©tranger
Voici le quatrième et dernier épisode de la série de questions/réponses échangées lors de la soirée Cloud organisée par Cyrille Le Clerc avec Sacha Labourey.
Lire la suite de cet article …
Cyrille Le Clerc interviewe Jean-Louis Rigau sur les coulisses des atelier Java Lire la suite de cet article …
… et se propose de vous aider Ă rĂ©aliser vos bonnes rĂ©solutions 2012 2011 ;-)

Envoyer nous votre CV Ă recrutement@xebia.fr ou via le formulaire de Lire la suite de cet article …

La revue de presse hebdomadaire des écosystèmes Java/JEE proposée par Xebia.
Actualité éditeurs / SSII
Le coin de la technique
EvĂ©nements de notre communautĂ© en France et Ă l’Ă©tranger

Vous aimez regarder les présentations NoSQL et Data Grid sur Internet ?

Nous aussi ! C’est pourquoi nous avons demandĂ© Ă Lire la suite de cet article …

Cyrille Le Clerc a profitĂ© du passage de Kirk Pepperdine Ă Paris pour l’interviewer sur les performances en Java ; au programme de ces discussions :
Combien de fois vous êtes vous senti engoncé dans votre frustration parce que vous étiez incapable d’utiliser des chaînes de caractères dans vos switch-case ? À défaut de pouvoir utiliser Java 7, une telle possibilité serait très utile pour par exemple traiter les arguments de votre application, pour analyser un fichier ou le contenu d’une chaîne. En fait, pour y arriver, vous devez écrire une série de if-else-if. Mais vous pourriez aussi utiliser une table de hachage, où les clés sont les chaînes de caractères et les valeurs sont les traitements réifiés par des Runnable, des Callable ou des Function de Guava.
Si le switch-case acceptant des chaĂ®nes de caractères est pour vous une chouette invention, le pattern matching de Scala nous indique que ce n’est pas suffisant ! En effet, il y a d’autres cas oĂą une sĂ©rie de if-else_if-else_if… serait sympathiquement transformĂ©e en une sorte de structure plus ou moins Ă©quivalente au switch-case. Par exemple, ce serait bien de pouvoir simplifier une sĂ©rie de compositions entre des instanceof et des class cast enfermĂ©s dans cette sĂ©rie de if-else_if-… en vue de rĂ©aliser des traitements spĂ©cifiques selon le type d’un paramètre (en attendant le multi-mĂ©thode).
Dans cet article, nous allons voir ce que peut apporter le pattern matching de Scala dans différents cas.

La revue de presse hebdomadaire des écosystèmes Java/JEE proposée par Xebia.
Le coin de la technique
EvĂ©nements de notre communautĂ© en France et Ă l’Ă©tranger
Comme le mouvement Agile a rapprochĂ© donneurs d’ordre et Ă©quipes de rĂ©alisation autour d’une vision commune orientĂ©e « produit », le mouvement DevOps rapproche aujourd’hui les Ă©quipes de dĂ©veloppement (DEV) et d’exploitation (OPS) autour d’une vision commune orientĂ©e « service », afin de mieux concilier rĂ©activitĂ© et qualitĂ© de service.
DevOps aborde le paradoxe entre des Ă©quipes projets qui cherchent Ă livrer toujours plus frĂ©quemment des nouvelles fonctionnalitĂ©s d’une part et d’autre part des Ă©quipes d’exploitation qui cherchent Ă stabiliser et fiabiliser les systèmes tout en maitrisant leur coĂ»t.
On peut décrire DevOps selon trois axes :
DevOps est souvent associĂ© Ă la mise en place d’un processus de Continuous Delivery qui, dans la mouvance Lean, vise Ă dĂ©ployer les fonctionnalitĂ©s en production au plus vite et de maximiser les feedbacks. Nous reviendrons dans un autre billet sur les processus de Continuous Delivery.
La mise en place d’une culture DevOps touche les humains, les processus et les outils. Nous proposons une dĂ©marche englobant ces trois aspects en prenant comme point d’entrĂ©e les processus et, de proche en proche, faire Ă©voluer les humains et les outils.
Voici le troisième épisode de la série de questions/réponses échangées lors de la soirée Cloud organisée par Cyrille Leclerc avec Sacha Labourey.
Lire la suite de cet article …
Xebia a le plaisir d’organiser un Paris Mongo Day avec Dwight Merriman et 10gen le 2 FĂ©vrier !
Lire la suite de cet article …
La revue de presse hebdomadaire des écosystèmes Java/JEE proposée par Xebia.
Actualité éditeurs / SSII
Avant de commencer l’annĂ©e 2012, je vous propose un petit quiz adaptĂ© d’un cas rĂ©el.
Un programme standalone parse un fichier et insère les donnĂ©es parsĂ©es dans une base de donnĂ©es. Le mĂŞme programme est exĂ©cutĂ© dans trois rĂ©gions diffĂ©rentes Ă savoir l’Europe, l’AmĂ©rique et l’Asie. Les entitĂ©s persistĂ©es ont toutes un champ uid unique. La valeur de ce champ doit ĂŞtre sous la forme ‘E-1234′ ce qui est interprĂ©tĂ© comme l’enregistrement n° 1234 d’Europe. La base de donnĂ©es est la mĂŞme pour les trois rĂ©gions.
Lorsqu’on lance le programme dans les trois rĂ©gions en parallèle, une exception est levĂ©e, laquelle et pourquoi est-elle levĂ©e ?

La revue de presse hebdomadaire des écosystèmes Java/JEE proposée par Xebia.
Actualité éditeurs / SSII