dimanche 28 novembre 2010

Application Web JPA avec Netbeans : Easy

JPA(Java Persistent API)

Nous allons dans ce tutoriel voir comment facilement créer vos applications web sous netbeans en utilisant les entités JPA.
Dans ce tutoriel nous utiliserons une base de données MySQL n’ayant qu’une seule table dont voici le code :
CREATE TABLE `groupes` (
`id` tinyint(4) NOT NULL auto_increment,
`nom` varchar(30) NOT NULL default '',
`mail` varchar(30) NOT NULL default '',
`niveau` varchar(10) NOT NULL default '',
PRIMARY KEY (`id`))
1- La base de données
Créez une base de donnée dans votre serveur MySQL et exécutez ce code.
Avant de commencer il faut avoir préalablement ajouté une connexion à la base de données dans Netbeans. Cela se fait à partir de l’onglet « services » de Netbeans.
Clic droit - MySQL connexion – et vous configurez ( c’est facile)



2- Creation d’un projet web avec Netbeans
Faites : - new project – java Web – Web application

3- Ajout d’une persistence Unit dans le projet
Le persistence Unit est très important car c’est lui qui configure le JPA. Il est créer au sei d’un fichier xml nommé : persistence.xml. On y distingue :
- La définition du provider (Hibernate dans notre cas)
- La connexion à la base de données
- Le dialecte (Drivers utilisés)
- Les propriétés de la source de données
Faite : - clic droit sur le projet – nouveau fichier – Persistence – Persistence Unit - Next


Configurer votre persistence Unit.


4- Création de notre classe d’entité
Netbeans nous permet de créer automatiquement nos classes d’entité directement à partir d’une base de données. (Yep ! the only IDE we need … that’s true)
Faites : comme sur les screens


- Précisez le nom du package
- Une alerte vous est donnée à l’étape 3 : entity Classes. Il n’existe pas d’unité de persistance.
- Veuillez précisez l’unité de persistance précédemment créé
- Ensuite à l’étape 4 de la création précisez (Pour notre exemple) le Collection Type à java.util.List


5- Petite vérification de notre persistence Unit.
Double cliquez sur le fichier persistence.xml et admirez la simplicité que nous offre Netbeans pour la configuration de nos persistences Units.
Faites : Vérifiez que la classe d’entité que vous avez générez est bel et bien incluse dans l’unité de persistance. Si ce n’est pas le cas cliquez sur « add Class » et faites le.



1- Création de notre servlet
Faites : clic droit sur le projet –nouveau fichier- web – servlet.
Dans le fichier généré par netbeans supprimez la méthode Process…bla bla ainsi que ses références.
Supprimez la méthode doPost (Nous ne l’utiliserons pas). Copier le contenue du code ci-dessous pour la méthode doGet()
package persitencePack;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class NewServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// Création de notre EntityManager, c’est grâce à lui qu’on va manipuler les entités JPA
//Précisez bien le nom de vore persistence Unit ici c’est : WebJpaTutoPU
EntityManagerFactory emf =Persistence.createEntityManagerFactory("WebJpaTutoPU");
EntityManager em = emf.createEntityManager();
try {
//On récupère les paramètres de la requête du client
String nom = request.getParameter("Nom");
String mail = request.getParameter("Mail");
String niveau = request.getParameter("Niveau");
if (nom != null && mail != null) {
//On initie la transaction, On crée un objet Groupes qu’on édite en fonction des paramètres envoyés par l’utilisateur.
em.getTransaction().begin();
Groupes gp = new Groupes();
gp.setNom(nom);
gp.setMail(mail);
gp.setNiveau(niveau);
// On utilise l’EntityManager pour enregistrer les données
em.persist(gp);
em.getTransaction().commit();
}
// On va aussi afficher le contenu de notre table groupes. Pour cela, nous obtenons la liste des //éléments contenu dans la table groupes et nous les mettons dans un attribut
List grpList = em.createQuery("SELECT g FROM Groupes g").getResultList();
request.setAttribute("groupes", grpList);
//l’attribut est ensuite envoyé vers la page index.jsp qui le traitera pour afficher son contenue.
request.getRequestDispatcher("/index.jsp").forward(request, response);
} finally {
//Fermeture du PersistenceManager:
if (em.getTransaction().isActive())
em.getTransaction().rollback();
em.close();
}
}
}
Un coup d’œil sur notre fichier web.xml (Important car c’est lui qui établit la correspondance entre de demande requête http et le servlet à instancier). Comme avec le persistence unit, netbeans facilite grandement l’édition de ce fichier primordiale pour notre application web.
(Yep Netbeans ! the only IDE we… euh ! … already say ? excuse me)


7- Maintenant on va faire une tour du côté de JSP
Faites : Remplacez les parties concernées de votre fichier index.jsp par les lignes suivantes (ne copier
pas les parties d’explication en gras)
<%@page import="java.util.*, javax.persistence.*, persitencePack.Groupes"%>



</span>JSP Page<span style="color: rgb(61, 133, 198);">


WEB APPLICATION - JPA


Explication : ICI il s’agit de notre formulaire d’enregistrement

Nom :
  
Mail :

Niveau :






    Explication : ICI On récupère l’attribut «groupes » fournit pas le servlet. Et comme il s’agit
    d’un objet de type List alors on le met dans l’objet grps qui est de type List

    <%
    @SuppressWarnings("unchecked")
    List grps = (List)request.getAttribute("groupes");
    if (grps != null) {
    for (Groupes grpes : grps) { %>

    Explication : ICI On affiche le contenu des objet de la liste, le parcours est assuré par une
    boucle for. Les méthodes get utilisez sont celle de votre entité JPA généré plus tôt (j’espère
    que vous y avez jeté un coup d’oeil)






  1. <%out.println(grpes.getNom()+" - "+grpes.getMail()+" - "+grpes.getNiveau()); %>
    <% }
    } %>




    8- Visualisons notre application
     

    Faites : Demarrez le serveur Tomcat en faisant un clic droit sur l’icône comme sur le screen
    - revenez sur le projet – clic droit – deploy
    - Ensuite : clic droit – run
    Vous aurez un résultat semblable à celui-ci.
     
    Vous pouvez contribuer à l’amélioration de ce tutoriel en laissant un commentaire. Merci.