Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Java et Eclipse
  3. Connexion
Extrait - Java et Eclipse Développez une application avec Java et Eclipse (2e édition)
Extraits du livre
Java et Eclipse Développez une application avec Java et Eclipse (2e édition)
2 avis
Revenir à la page d'achat du livre

Connexion

Introduction

Les principales maquettes dont celle de la fenêtre de connexion ont été créées et la gestion des événements a été traitée dans le chapitre Maquettes. Il s’agit dans ce chapitre de mettre en place tous les contrôles nécessaires avant d’autoriser l’accès à l’application. Simultanément, il faut gérer l’accès au serveur et à la base de données en prenant en compte les problèmes possibles de connexion.

Paramètres de connexion

JPA fournit un mécanisme général de configuration de la connexion à la base de données. Ce mécanisme s’appuie sur la présence d’un fichier particulier à un endroit donné. La première étape, vue au chapitre Base de données MySQL, a été de créer ce fichier et de l’avoir configuré avec les données de connexion à la base. Il sera complété ensuite au fur et à mesure de l’avancement du projet.

 Répétez la création du fichier « persistence.xml » dans le répertoire src/main/resources/META-INF du projet de gestion.

 Ajoutez le pilote JDBC MySQL dans les propriétés du projet.

 Ajoutez les fichiers jar issus de la librairie EclipseLink.

 Testez l’accès à la base de données avec la classe TestJPA qui a été codée au chapitre Base de données MySQL, en l’important dans le projet de gestion Oxygen.

Il est ensuite temps de s’intéresser à la méthode d’accès aux données de l’application.

Pour faire simple et rapide, le nom de l’utilisateur et le mot de passe sont uniques pour tous les utilisateurs de l’application. Les paramètres concernant le pilote, le serveur et la base de données proviennent de l’installation réalisée pour le SGBDR MySQL (cf. chapitre Base de données MySQL), ainsi que les données d’identification.

Dans une application plus réaliste, il serait possible de créer des tables utilisateurs avec pour chaque utilisateur un couple login/mot de passe unique et un identifiant d’accès unique à la base. Une autre possibilité serait de gérer les utilisateurs via la base de données elle-même, l’application se chargeant d’injecter...

Mise en service de la fenêtre de connexion

La fenêtre FConnexion va passer ici du statut de maquette à celle de fenêtre opérationnelle.

 Commencez par rajouter un package nommé « dialogue ».

 Recopiez dans ce package toutes les classes maquette.

La classe FConnexion est une IHM. Elle se contente de transmettre la demande de l’utilisateur à la classe Connexion pour la connexion à la base de données.

 Ouvrez la classe graphique FConnexion avec WindowBuilder Editor.

 Complétez les imports.


import controle.connection.Connexion;
 

 Allez dans la méthode valider() et remplacez le code suivant :


    boolean valide = true; // ce code sera remplacé plus tard
 

par :


    String leNom = txtSaisieUtilisateur.getText(); 
    String leMotDePasse = String.valueOf( 
                        pwdMotDePasse.getPassword()); 
    Connexion connexion = Connexion.getConnexion(); 
    boolean valide = connexion.controle(leNom, leMotDePasse);
 

Le contrôle de saisie s’effectue avec la méthode controle() de la classe Connexion.

L’expression pwdMotDePasse.getPassword() renvoie un tableau de caractères.

Pour des raisons de sécurité à l’utilisation de la classe JPasswordField, Java fait une distinction entre les chaînes de caractères déclarées avec la classe String et les tableaux de caractères.


 // accepté 
char[] vChar = pwdMotDePasse.getPassword(); 
 
// refusé 
String leMotDePasse = pwdMotDePasse.getPassword();
 

Il faut convertir le tableau de caractères en chaîne de caractères, conversion réalisée avec la méthode statique valueOf() de la classe String.


leMotDePasse = String.valueOf(pwdMotDePasse.getPassword());
 

Ces contrôles s’effectuent de deux manières : si la saisie du login/mot de passe...

Lecture des enregistrements

À ce stade, il est temps de faire quelques tests d’écriture et de lecture des données dans la base, à l’aide de la classe TestJPA.

 Ajoutez d’abord une méthode toString() à cette classe en utilisant l’option Source - Generate toString()… du menu contextuel. Elle permettra d’avoir plus de confort dans l’affichage des données.


@Override 
public String toString() { 
    return "TestJPA [clePrimaire=" + clePrimaire  
                + ", message=" + message 
            + "]"; 
}
 

 Modifiez ensuite la méthode main() de la classe TestJPA comme ceci :


public static void main(String[] args) { 
    Connexion connexion = Connexion.getConnexion(); 
 
    // création de données de test         
    TestJPA test1 = new TestJPA(); 
    test1.clePrimaire = 1; 
    test1.message = "message 1"; 
     
    TestJPA test2 = new TestJPA(); 
    test2.clePrimaire = 2; 
    test2.message = "message 2"; 
 
    TestJPA test3 = new TestJPA(); 
    test3.clePrimaire = 3; 
    test3.message = "message 3"; 
 
    // démarrer une transaction  
    EntityTransaction transaction = em.getTransaction(); 
    transaction.begin(); 
     
    // persister les éléments dans le gestionnaire d'entités 
    em.persist(test1); 
    em.persist(test2); 
    em.persist(test3); 
     
    // synchroniser le gestionnaire avec la base 
    em.flush(); 
 
    em.remove(test3); 
 
    // finaliser la transaction 
    transaction.commit(); 
     
    // les données sont maintenant en base 
} 
 

Pour effectuer une opération d’écriture vers la base, JPA doit obligatoirement être dans une transaction active. Cette transaction se récupère par la méthode...