Le CRUD acronyme signifiant (C : Create , R: Read ou Retrieve U : Update et D : Delete (différent de Remove), est utilisé dans tout langage de programmation possédant ces quatre opérations standards qui opèrent sur des objets, des données peu importe la forme, le format et leur conteneur. Il peut s'agir par exemple d'instances (objets créés à partir de classes ou modèles) d'un composant ou d'un jeu d'enregistrements d'une base de données ou tout simplement un fichier système (texte, hexa, binaire ou autres). Les quatre opérations s'imposent intrinsèquement par elles-mêmes et par la nature même du paradigme de la programmation OO (Orienté Objet) en étant des instances vivantes de classes (Create) subissant des modifications (Update) et des consultations (Read), et finiront par mourir (Delete).
Cet atticle s'adresse à une poulation ayant déjà une bonne base sur les différent concepts abordés et par conséquent il est foculasé sur le comment et non pas sur le quoi. Son but ne consiste pas à expliquer en détails ce que c'est le CRUD et tous les concepts associés ou utilisés, mais plutôt, comme son titre l'indique, son objectif est de montrer comment réaliser le CRUD dans un langage OO comme JAVA Le même exercice peut être réalisé dans n'importe quel autre langage OO de dernière génération comme C#, PHP ou autres.
Il s'agit plus précisémment de montre à travers d'une application simple de type WEB développée en JAVA (JEE : Java Entreprise Edition. Pour le moment je ne donnerai pas plus de détails et je vous invite à lire le chapitre suivant pour découvrir tous les sujets technologiques utilisés dans cette application.
Sans plus tarder, voici le résultat en image de l'application WEB formée d'une page unique réalisant les quatre opérations du CRUD, mais aussi en bonus l'opération de recherche selon plusieurs critères.
Cette application vous montre Comment :
Bien que l'environnement de développement l'importe peu, il est néanmoins important de le définir dès le début de n'importe quel projet de cette nature afin de bien définir les technologies, les techniques et les frameworks à utiliser. Toutes ces briques concernent :
Afin de matérialiser ces différentes briques, voici en image les parties du projet segmentées tel qu'affiché dans l'explorateur projet de Netbeans :
Si vous optez pour un autre IDE open source comme ECLIPSE, il est tout à fait possible d'éditer le code source accompagnant cet article dans ce dernier. On a utilisé le format de données JSON afin de réaliser la récupération des données véhiculées par AJAX. Il est aussi possible d'utiliser un autre format différent comme XML via des modifications très légères du projet. D'ailleurs, une fonction Javascript est déjà incluse dans le projet pour effectuer la récupération des données au format XML.
Ci-dessous, je vous explique pas à pas les étapes à suivre pour créer le projet.
Après avoir cliqué sur le menu File->New Project, suivez les étapes de l'assistant de création de projets telles qu'indiquées ci-contre :
A noter qu'aucun Framework ne sera utilisé pour ce projet. A noter aussi que le projet utilise le JDK 7 (Java Devlopment Kit) une librairie dédiée aux développeurs d'application JEE, ou toute autre version compatible de préférence 6 ou plus.
Le squelette de votre projets est créé avec des éléments par défaut déjà présents comme la page de démarrage "index.htm" à supprimer, le fichier de MANIFEST.MF qui sert à configurer le fichier archive (WAR : WEB ARchive) généré représentant le package de l'application à distribuer, déployer ou inclure dans une application Entreprise comprenant plusieurs composants.
B.1 Remplacer la page WEB :
<welcome-file-list>
<welcome-file>
index.jsp
</welcome-file>
</welcome-file-list>
Pour cela, nous ajoutons un dossier scripts dédié à Javascript dans lequel un script appelé getResult.js est créé et qui aura la délégation du client pour communiquer avec les composants serveur en utilisant AJAX comme moyen de communication (à ne pas confondre avec le protocole standard du WEB qu'est le HTTP) et le format JSON comme flux de données.
public interface IUser {
public boolean addUser(User pUser, AtomicReference<String> errorMsg);
public boolean delUser(User pUser, AtomicReference<String> errorMsg);
public boolean updateUser(User pInUser, AtomicReference<String> errorMsg);
public String getAllUsers(); // get JSON represntation of all users
public ResultSet getAllUsersResultSet(); // get the resultset of all users
public String getUserById(int pId); // get JSON represntation of users with pId serach
public String getUsersByName(String pName); // get JSON represntation of users with pName serach
public String getUsersByPrenom(String pPrenom); // get JSON represntation of users with pPrenom serach
public String getUserByEmail(String pEmail); // get JSON represntation of users with pEmail serach
}
Afin de créer la base de données db_ajax_json, vous pouvez utiliser par exemple
MySql Workbench téléchargeable ici. Puis vous procédez
selon les deux figures suivantes :
Afin que l'application puisse se connecter à la base de données, vous avez besoin de 3 éléments :
Toutes les données saisies aux étapes 1, 2 et 3 sont automatiquement ajoutées par Netbeans dans le fichier
de configuration du serveur d'application GlashFich matérialisé par un fichier XML :
sun-resources.xml (à noter qu'il arrive qu'il porte un nom différent !) dont voici un aperçu :
Par ailleurs, il est
à noter que les 3 étapes précédentes peuvent être réalisées directement dans la console WEB de GlashFish ou celle du serveur
d'application que vous utilisez.
Dans cet article, nous avons montré comment passer du concept au concret, difficulté à laquelle sont confrontés bon nombre de débutants ou de personnes se reconvertissant au domaine de développement applicatif utilisant notamment les nouvelles technologies du WEB.
Il a été voulu de ne pas aborder le code de l'application proposée afin d'illustrer les différents concepts exposés, car j'estime que la compréhension des concepts et la manière de les matérialiser sont plus importantes que les centaines, voire les milliers ou centaines de milliers de lignes de code à implémenter. Pour construire, il faut d'abord concevoir l'architecture et poser les fondations et ce n'est qu'après ces étapes fondamentales que nos préoccupations se concentrent sur les détails en termes de choix de la stratégie de programmation et du design physique. C'est cela que j'ai tenté de montrer dans cet article que j'espère sera d'utilité pour certains parmi vous qui s'intéressent à ce sujet.
Je vous propose de modifier le projet en téléchargement pour qu’il prend en charge le format XML en plus en tant que choix supplémentaire de l'utilisateur à travers l'unique page de l'application. Je vous propose également d'extérioriser toutes les validations de la servlet UserCRUD dans une classe dédiée et faire appel aux fonctions de validation.
Dans un prochain article, j'espère présenter ce même projet, mais avec l'utilisation d'une autre architeture de vue basée sur l'utlisation de la technologie JSF (Java Server Faces) couplée avec le Framework d'interface graphique (IHM) Prime Faces à mon avis le plus complet du marché en open source dans sa catégorie.