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.



