d3:tp04

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
d3:tp04 [2025/09/22 16:18] – [D3-TP04 : Projet gestion de clients(4) - Persistance des données (1)] dthevenotd3:tp04 [2025/10/12 20:24] (Version actuelle) – [D3-TP04 : Projet gestion de clients(4) - Persistance des données (1)] dthevenot
Ligne 1: Ligne 1:
 ====== D3-TP04 : Projet gestion de clients(4) - Persistance des données (1) ====== ====== D3-TP04 : Projet gestion de clients(4) - Persistance des données (1) ======
 <bootnote>  <bootnote> 
-  * version "JDBC manuel" -> à passer en JPA +  * version "JDBC manuel" (Java DataBase Connectivity : API standard pour interagir avec les bases données relationnelles en Java) -> à passer en [[d3:TP04:JPA]] [[d3:TP06|JPA]](ORM) 
-  * fichier configuration mariadb sur le serveur(sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf +  * fichier configuration mariadb sur le serveur(sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf) à modifier (bind-address=0.0.0.0) pour accès distant 
-) à modifier (bind-address=0.0.0.0) pour accès distant +  * relancer le serveur  
-  * vérifier configuration de l'accès à la bd dans Netbeans (Services -> Bases de données) avant de commencer. +  * Mettre le .jar du jdbc dans les librairies du serveur web (C:\payara6\glassfish\domains\domain1\lib) et/ou ajouter la dépendance 
 +  * tester la configuration de l'accès à la bd dans Netbeans (Services -> Bases de données) avant de commencer. 
 </bootnote> </bootnote>
 +
 +===== avec MAVEN =====
 +Ajouter une dépendance (**pom.xml**) : 
 +<code>
 + <dependency>
 +            <groupId>org.mariadb.jdbc</groupId>
 +            <artifactId>mariadb-java-client</artifactId>
 +            <version>3.3.3</version>
 +        </dependency>
 +</code>
 ===== Contexte ===== ===== Contexte =====
    
Ligne 21: Ligne 32:
   - Créer un bean **Client** correspondant à la description de la table client de la base de données   - Créer un bean **Client** correspondant à la description de la table client de la base de données
   - Mettre en place le **connecteur JDBC** (mariadb-java-client-3.5.6.jar sur le drive et voir SIO1/scannetteTP4)    - Mettre en place le **connecteur JDBC** (mariadb-java-client-3.5.6.jar sur le drive et voir SIO1/scannetteTP4) 
 +  - Copier le connecteur dans les librairies de Payara (ex :C:\payara6\glassfish\domains\domain1\lib)
   - Depuis le Drive, récupérer la classe **Connexion** et la déposer dans l'application dans un nouveau package **com.test.bdd** créé au niveau du répertoire Source Packages. Cette classe permet  d'établir une connexion à la base de données.    - Depuis le Drive, récupérer la classe **Connexion** et la déposer dans l'application dans un nouveau package **com.test.bdd** créé au niveau du répertoire Source Packages. Cette classe permet  d'établir une connexion à la base de données. 
  
Ligne 47: Ligne 59:
  
 Exemple :  Exemple : 
 +<code ruby reaAll()> 
 +public ArrayList<Client> readAll(){ 
 +        ArrayList<Client> lesClients=new ArrayList<>(); 
 +        try { 
 +            Statement stmt=theConnection.createStatement(); 
 +            ResultSet resultQ=null; 
 +            resultQ=stmt.executeQuery("SELECT * FROM client;"); 
 +            while (resultQ.next()){ 
 +                Client resultat=new Client(resultQ.getInt("id"),resultQ.getString("nom"),resultQ.getString("prenom"),resultQ.getString("mail")); 
 +                lesClients.add(resultat); 
 +            } 
 +            resultQ.close(); 
 +            stmt.close(); 
 +               
 +        } 
 +        catch(SQLException ex){ 
 +            System.out.println("SQLException:"+ex.getMessage()); 
 +            System.out.println("SQLState:"+ex.getSQLState()); 
 +            System.out.println("code Erreur:"+ex.getErrorCode()); 
 +        } 
 +        return lesClients; 
 +    } 
 +
 +  </code>
 ==== II. Modification de la servlet ListeServlet.java ==== ==== II. Modification de la servlet ListeServlet.java ====
      
Ligne 57: Ligne 92:
    
 La jsp devra afficher les clients présents dans la collection lesClients. La jsp devra afficher les clients présents dans la collection lesClients.
 +
 +===== Optimisation du code =====
 +==== Fichier .env ====
 +Un fichier .env est un fichier de configuration qui permet de stocker des **variables d’environnement** nécessaires au fonctionnement de l'applications. Il joue un rôle crucial dans la gestion des paramètres sensibles tels que les clés API, **les informations sur les bases de données** ou d’autres configurations environnementales qui ne devraient pas être visibles dans le code source. Grâce à ce type de fichier, les développeurs peuvent garantir la **sécurité des données** tout en conservant une **flexibilité dans la configuration des projets**.
 +
 +=== Avec Jakarta EE et serveur Payara ===
 +Le fichier .env peut être créé à la racine de ton projet (là où se trouvent le fichier pom.xml, le dossier src/) :
 +== Exemple de contenu : ==
 +<code>
 +DB_HOST=192.168.100.100
 +DB_NAME=bdclient
 +DB_USER=adminBDClient
 +DB_PASSWORD=mdpBDClient
 +</code>
 +
 +Dans les fichiers de configuratin (Project Files-fichier pom.xml), ajouter une dépendance dotenv-java (librairie utilisable avec Maven) :
 +<code>
 +<dependency>
 +    <groupId>io.github.cdimascio</groupId>
 +    <artifactId>dotenv-java</artifactId>
 +    <version>3.0.0</version>
 +</dependency>
 +</code>
 +Dans le code, 
 +  - importation de l librairie : <code>import io.github.cdimascio.dotenv.Dotenv;</code>
 +  - exemple d'utilisation pour la connexion à la base de données :
 +<code>
 +      // 1.Chargement du fichier .env à la racine du projet
 +      Dotenv dotenv = Dotenv.load();
 +      
 +      // 2. Initialisation des paramètres de connexion
 +      String host   = dotenv.get("DB_HOST");                  // Serveur de bd
 +      String dbname = dotenv.get("DB_NAME");                  // Nom bd
 +      String url = "jdbc:mariadb://" + host + "/" + dbname;   // url de connexion
 +      url += "?autoReconnect=true";  // Ajout 26/09/2021
 +      System.out.println("url : "+url);
 +      String user = dotenv.get("DB_USER");                    // nom du user
 +      System.out.println("nomUtil : "+user);
 +      String passwd = dotenv.get("DB_PASSWORD");              // mot de passe
 +      System.out.println("mdp : "+passwd);
 +      
 +      // 3. Connexion
 +      connect = (Connection) DriverManager.getConnection(url, user, passwd);
 +  </code>
 +== Pour le déploiement ==
 +Dans pom.xml, configurer le plugin maven-resources-plugin pour que .env soit copié dans le target/ à chaque build.
 +<code>
 +<plugin>
 +                <groupId>org.apache.maven.plugins</groupId>
 +                <artifactId>maven-resources-plugin</artifactId>
 +                <version>3.3.1</version>
 +                <executions>
 +                    <execution>
 +                        <id>copy-env</id>
 +                        <phase>process-resources</phase>
 +                        <goals>
 +                            <goal>copy-resources</goal>
 +                        </goals>
 +                        <configuration>
 +                            <outputDirectory>${project.build.outputDirectory}</outputDirectory>
 +                            <resources>
 +                                <resource>
 +                                    <directory>${basedir}</directory>
 +                                    <includes>
 +                                        <include>.env</include>
 +                                    </includes>
 +                                </resource>
 +                            </resources>
 +                        </configuration>
 +                    </execution>
 +                </executions>
 +            </plugin>
 +   </code>
 +
  • d3/tp04.1758550722.txt.gz
  • Dernière modification : 2025/09/22 16:18
  • de dthevenot