Hibernuts

Hibernuts
Un squelette propre pour une application Hibernate/Struts/Mysql avec Maven
(soyons pros...)
Outils nécessaires:
•
•
•
•
Eclipse pour Java EE Developers avec les Hibernate tools et le database
development plugin installés
Mysql 5.1
Tomcat 8
Librairies struts, hibernate et le connecteur mysql
I ) Préparer Eclipse:
a- Installer les plugins depuis le menu “Help-install new software”
b- Créer une base de données dans mysql (vous savez faire) et la déclarer dans
Eclipse: (étape facultative mais utile)
Ouvrir la perspective Database Development et faire un click droit sur Database
Connection puis choisir “new”:
Le nom “MaBase” est un nom qui
représente cette connection dans
Eclipse.
Appuyez sur “next” et cliquez sur l'icone New Driver Definition et choisissez la
dernière version de Mysql dans la liste puis remplir les champs qui correspondent
à la base que vous avez créée dans phpMyAdmin. (database = le nom de la base
dans votre Mysql)
Cliquez “test connection” pour voir si tout s'est bien passé et puis “finish”.
c- Créer un nouveau projet Maven
(Maven sert à gérer la construction du projet, à vérifier les dépendences et aide à la bonne
génération des .war pour déployer l'application. Voir wikipédia pour plus de détails)
Dans les écrans suivant, faire comme dans les images ci-dessous et cliquer
“finish”
choisissez votre
workspace
Choisir le type de projet “maven webapp” dans la liste qui apparaît
Et donner un nom au projet puis “finish”
d- Comment utiliser Maven et lancer le projet
Faire un click droit sur le nom du projet puis sélectionner Run As, Maven build
“clean install” est une commande passée à Maven pour
construire le projet la première fois et génère un
premier .war
Pour les plus téméraires:
http://maven.apache.org/guides/introduction/introductionto-the-lifecycle.html
L'arborescence d'un projet Maven qui utilise Struts et Hibernate resemble à ça:
Les packages java (n'existent pas à la création du projet)
action: Les classes Java pour les actions (Controlleur)
model et modelDAO: Les classes pour accés BDD (Modèle)
Les xml de configurations des framework et fichiers mapping
Les jsp (Vue)
Le fichier config de Maven
Ouvrez le fichier index.jsp qui a été généré à la création du projet.
Si une erreur s'affiche, allez dans les propriétés du projet (click droit sur le projet)
et sélectionner Targeted Runtime. Cochez Tomcat8 dans la liste:
e- Ajouter les librairies au classpath du projet
Click droit sur le projet – Build Path – Configure Build Path puis ajouter les .jar pour
Hibernate, Mysql Connector et Struts2
f- Les fichiers XML
web.xml permet de dire à Tomcat comment naviguer sur votre site. Dans notre
cas il utilisera le dispatcher de struts. Il est généré dans
src/main/webapp/WEB-INF/
Source: http://sd-67292.dedibox.fr/~sebastien.f/hibernuts/web.xml
hibernate.cfg.xml permet à hibernate d'accéder à la base de données active et
à pouvoir faire le lien entre les tables et le objets java (mapping)
Vous pouvez générer un fichier de base en faisant File – new – other – Hibernate –
configuration file
ou vous pouvez le créer directement dans src/main/resources
Source: http://sd-67292.dedibox.fr/~sebastien.f/hibernuts/hibernate.cfg.xml
stagiaire.hmb.xml permet à hibernate de faire le lien entre les champs des
objets Java et le champs de la table stagiaires dans mysql
Vous pouvez le générer ou le créer dans src/main/resources
Source: http://sd-67292.dedibox.fr/~sebastien.f/hibernuts/stagiaire.hmb.xml
struts.xml Configure struts et en particulier définit les actions utilisateur.
Se trouve dans src/main/resources
Source: http://sd-67292.dedibox.fr/~sebastien.f/hibernuts/struts.xml
pom.xml Se trouve à la racine du projet mais n'est pas inclus lors du déploiement
de l'application. C'est la configuration de Maven. On y déclare toutes les
dépendances de notre projet. Dans notre cas on indique des dépendances pour
struts, hibernate et mysql
Source: http://sd-67292.dedibox.fr/~sebastien.f/hibernuts/pom.xml
Toutes les autres source à la racine:
http://sd-67292.dedibox.fr/~sebastien.f/hibernuts/
II ) Le Code:
a- index.jsp
<%@ taglib prefix="s" uri="/struts-tags" %>
Les tags struts permettent de générer des éléments html et de les
lier aux actions.
Par exemple:
<s:actionerror />
Toute action qui retourne ERROR sur notre page index.jsp pourra passer un
message qui sera inséré directement à l'endroit du tag <s:actionerror />
<a href="liste.action">Voir la liste des stagiaires</a>
Un simple lien html qui pointe vers l'action “liste” et qui va lancer la méthode
“execute” de la classe “ListeStagiaires.java”
Tout ça a été déclaré dans le fichier struts.xml
b- ListeStagiaires.java
Elle extend ActionSupport qui est une classe de la librairie struts et nous permet
d'appeler la méthode “execute” faisant ainsi de notre classe une action.
Comme c'est une redéfinition, on la marque en @Override
String SQL_QUERY ="from Stagiaire";
On crée une requête hibernate. La requête se fait sur l'OBJET Stagiaire.
Session session = HibernateUtils.getSessionFactory().openSession();
On récupère la session de connexion à Mysql
List<Stagiaire> liste = session.createQuery(SQL_QUERY).list();
On met le résultat dans une liste de type Stagiaire. (ça peut être un ArrayList)
Le warning d'Eclipse vient du fait que le compilateur ne peut pas savoir avant
l'exécution si createQuery() va bien retourner une variable de type Stagiaire.
On met donc @SuppressWarnings pour ne plus afficher le message.
if(!liste.isEmpty())
Si la requête renvoie une liste non vide
setStagiaires(liste);
return SUCCESS;
On initialise notre variable d'instance List<Stagiaire>stagiaires
et on retourne “success” (voir le fichier struts.xml)
On verra comment cette variable d'instance peut être accessible depuis les .jsp
addActionError("Pas de stagiaires dans la bdd");
return ERROR;
Si la liste est vide, on appelle la méthode addActionError(String) dont le message
pourra être récupérée par la page index.jsp grâce au tag struts vu plus haut.
Si vous avez créé un fichier properties avec une liste de constantes, vous pouvez
les utiliser avec la méthode getText() par exemple:
addActionError(getText(“error.liste”));
c- liste.jsp
On pourra accéder aux variables d'instance des actions grâce au tag struts
s:property
<s:iterator value="stagiaires">
Boucle sur la liste “stagiaires” (notre variable d'instance List<Stagiaire>
stagiaires)
<s:property value = "nom"/> - <s:property value = "prenom"/> <s:property value = "email"/>
<small>inscrit le <s:property value = "inscription"/></small>
Et on accède au champs de l'objet Stagiaire grâce à s:property value.
III ) Déployer le projet sur tomcat:
Click droit sur le projet et choisir Run As – Maven Build
Cette fois-ci la commande (goals) à passer à Maven sera simplement
“install” et non plus “clean install”
Dans le répertoire de votre projet, dans le dossier target, Maven à
générer un dossier “hibernuts” et un fichier “hibernuts.war”
Mettez tout dans le répertoire webapps de tomcat puis lancer le
serveur en faisant ./tomcat/bin/startup.sh ou tomcat\bin\startup.bat pour
windows.
(si au lancement de tomcat vous avez des erreur de variable d'environnement, pointer
CATALINA_HOME vers le dossier d'installation de tomcat et JRE_HOME vers votre jre java)
Rendez-vous à l'adresse: 127.0.0.1:8080/hibernuts
L'index.jsp devrait se lancer. Cliquez sur le lien pour lancer l'action liste.
Maintenant vous devriez avoir tous les outils pour faire un stage en entreprise :)