Académique Documents
Professionnel Documents
Culture Documents
Accueil > Cours > Développez des sites web avec Java EE > Utiliser le modèle DAO
20 heures
Difficile Licence
Mis à jour le 05/07/2021
Enregistrer
Utiliser le modèle DAO dans une base
de données
Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours ! 1. Travailler avec
JDBC et une base
Téléchargez le fichier audiodescription : Partie 5, Chapitre 3 de données
2. Lire et enregistrer
Vous trouverez sous la vidéo les codes source du cours.
des données en
SQL
3. Utiliser le modèle
DAO
Quiz : Quiz 5
Codes source Winnovative PDF Tools Demo
Notre contrôleur Test.java charge le DAO sans savoir si celui-ci stocke dans une base de ACCÉDER AU
données MySQL ou ailleurs. Il demande simplement d'aller stocker des données ou FORUM
d'en récupérer :
java
package com.octest.servlets;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.octest.bdd.Noms;
import com.octest.beans.Utilisateur;
import com.octest.dao.*;
/**
* Servlet implementation class Test
*/
@WebServlet("/Test")
public class Test extends HttpServlet {
private static final long serialVersionUID = 1L;
private UtilisateurDao utilisateurDao;
utilisateurDao.ajouter(utilisateur);
request.setAttribute("utilisateurs", utilisateurDao.lister());
this.getServletContext().getRequestDispatcher("/WEB-INF/bonjour.jsp").forward
(request, response);
}
package com.octest.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
// Récupération du Dao
public UtilisateurDao getUtilisateurDao() {
return new UtilisateurDaoImpl(this);
}
}
On utilise une interface UtilisateurDao.java pour définir les méthodes d'accès aux
données des utilisateurs, indépendamment de la méthode de stockage. On indique
juste des noms de méthodes ici.
java
package com.octest.dao;
import java.util.List;
import com.octest.beans.Utilisateur;
import com.octest.beans.Utilisateur;
UtilisateurDaoImpl(DaoFactory daoFactory) {
this.daoFactory = daoFactory;
}
@Override
public void ajouter(Utilisateur utilisateur) {
Connection connexion = null;
PreparedStatement preparedStatement = null;
try {
connexion = daoFactory.getConnection();
preparedStatement = connexion.prepareStatement("INSERT INTO noms(nom, pre
nom) VALUES(?, ?);");
preparedStatement.setString(1, utilisateur.getNom());
preparedStatement.setString(2, utilisateur.getPrenom());
preparedStatement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public List<Utilisateur> lister() {
List<Utilisateur> utilisateurs = new ArrayList<Utilisateur>();
Connection connexion = null;
Statement statement = null;
ResultSet resultat = null;
try {
connexion = daoFactory.getConnection();
statement = connexion.createStatement();
resultat = statement.executeQuery("SELECT nom, prenom FROM noms;");
while (resultat.next()) {
String nom = resultat.getString("nom");
String prenom = resultat.getString("prenom");
utilisateurs.add(utilisateur);
}
} catch (SQLException e) {
e.printStackTrace();
}
return utilisateurs;
}
Comme toujours, on a besoin de notre Java Bean Utilisateur.java pour transporter les
données. Celui-ci ne change pas :
java
package com.octest.beans;
Winnovative PDF Tools Demo
public class Utilisateur {
private String nom;
private String prenom;
Et notre JSP bonjour.jsp ne change pas non plus. Un formulaire, une boucle qui liste les
utilisateurs et c'est tout ! On a changé tout le modèle sans affecter la vue un seul instant.
jsp
<ul>
<c:forEach var="utilisateur" items="${ utilisateurs }">
<li><c:out value="${ utilisateur.prenom }" /> <c:out value="${ utilisateu
r.nom }" /></li>
</c:forEach>
</ul>
</body>
</html>
Le professeur
Mathieu Nebra
Entrepreneur à plein temps, auteur à plein temps et co-fondateur d'OpenClassrooms :o)