mercredi 23 septembre 2009

Génération d'une appli JEE 6 avec NetBeans

Le développement d'applications de gestion contient son petit lot des taches répétitives, demandant peu de réflexion : création des formulaires, persistance et récupération des données... En tant que développeurs, nous rêvons souvent de pouvoir automatiser ces étapes peu intéressantes pour nous concentrer sur le vrai code métier de notre application, celui qui nécessite réellement l'apport d'une intelligence humaine.
Pour cela, nous pouvons utiliser des frameworks de RAD, comme Spring ROO ou Grails.
Nous allons voir aujourd'hui une autre alternative, la génération de code sous NetBeans à partir du modèle objet.
Cette méthode permet de générer une application JEE 6 à base de JSF 2.0 et EJB 3.1 à partir d'entités JPA 2.0, en utilisant l'outil JsfCrudGenerator de NetBeans 6.8 (qui est encore pour le moment en version beta). Attention à bien télécharger la version "Java" pour bénéficier du serveur GlassFish v3, dont nous aurons besoin dans la suite du tutoriel.

La première étape consiste à définir son modèle objet. Nous allons utiliser au maximum les wizard de NetBeans pour avoir le moins de code possible à taper.
Après avoir créé un projet de type Web Application dans NetBeans en ayant coché l'option Java Server Faces, créer les entités du domaine métier depuis le menu "New-->Entity Class" :




Lors de la création de la première entité, cliquer sur "Create Persistence Unit",cocher l'option "Table Generation Strategy : create" et choisir un des datasources proposés :



Au runtime, une base de données Derby sera automatiquement créée sur le serveur Glassfish livré avec NetBeans.

Une fois les entités créées, utiliser le wizard "New-->JSF Pages from entities Classes", juste au dessus de l'option Entity Class.
A partir du wizard, sélectionnez toutes les entités :


Suivez le wizard, et voilà votre application est créée! Vous pouvez la tester en effectuant un clic droit sur le projet et en cliquant sur "Run".

  • Exemples d'écrans :
Lister des entités

Modifier une entité


Vous comme pouvez le constater, cette méthode a l'avantage de faire gagner énormément de temps sur l'écriture des pages JSF, des contrôleurs et des EJB. Cependant elle n'est pas exempte de défauts : le code généré n'est pas très agréable à lire et à maintenir, notamment lorsqu'il fait appels aux fonctions "jsf_crud" dans les pages JSF... De plus, il ne faut pas espérer obtenir une application livrable en l'état, comme vous pouvez le constater il s'agit surtout de pré-macher le travail pour gagner du temps, les pages web générées étant assez rudimentaires.