IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Persistance des données Java Discussion :

Instance Users DAO


Sujet :

Persistance des données Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2013
    Messages : 40
    Points : 29
    Points
    29
    Par défaut Instance Users DAO
    Bonsoir à tous, je viens demander des conseils plus que du code sur un projet en cours.

    Je travail sur une base oracle, sur cette base j'ai créer 3 utilisateurs, chacun avec des droits d'accès différents.

    J'ai créer une Classe ConnectDAO, dans laquelle je retourne une instance pour un utilisateur déclaré en "dur" dans ma Classe, exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private static String user = "user_connect";
    Le code de la fonction qui me retourne l'instance,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public static Connection getInstance() {
    		if(connect == null) {
    			try {
    				Class.forName(driver);
    				connect = DriverManager.getConnection(URL_XE, user, password);
    			}catch(Exception e) {
    				e.printStackTrace();
    			}			
    		}
    		return connect;		
    	}
    Jusque là tout va bien.

    Maintenant j'aimerais avoir des conseils pour pouvoir créer une instance suivant l'utilisateur qui se connecte à la base via mon interface Swing, du coup pouvoir avoir 1, 2 ou 3 instances de connexion à ma base.

    Du coup le mieux est-t'il de créer une Classe Users_db, avec pour chacun une méthode d'accès getUsers/getPwd, et d'appeler ces méthodes dans ma classe ConnectDAO et de faire quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private static String user = getUser;
    si cele est possible.

    Une autre solution est surement possible et surement meilleur, tous les conseils sont bon à prendre.

    J'espère m'être bien fait comprendre .

    Merci d'avance.

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Ta méthode getInstance est probablement dans une classe de type ConnectionManager, par exemple.

    Le plus simple, selon moi, c'est de retirer cet aspect statique, et de créer un ConnectionManager par utilisateur. Du style:



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class ConnectionManager {
     
       public ConnectionManager(String user, String password) {
          // initialiser
       }
       private Connection connection;
     
       public static final ConnectionManager managerX = new ConnectionManager("xxxx","xxxx");
       public static final ConnectionManager managerX = new ConnectionManager("yyyy","yyyy");
       public static final ConnectionManager managerX = new ConnectionManager("zzzz","zzzz");
     
    }
    Ca c'est pour débuter, il faudra ensuite tenir compte du fait que le user / pass sont fournis en configuration, de la gestion multithreads, .... Mais là, des outils comme spring IOC commenceront vraiment à être utiles.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2013
    Messages : 40
    Points : 29
    Points
    29
    Par défaut
    Merci de votre réponse, je prends note de tout ceci. J'étais partie sur l'option suivant hier soir

    Une Class ConnectManagerDAO, qui me retourne une instance de connexion.
    Et une classe AccessManagerDAO qui ressemble à ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    package db_connect;
     
    import java.sql.Connection;
     
    public class AccessManagerDAO extends ConnectManagerDAO{
     
    	public AccessManagerDAO()
    	{
    	}
     
    	public AccessManagerDAO(String pUser, String pPassword) {
    		this.user = pUser;		
    		this.password = pPassword;
    		super.getInstance(user,password);
    	}
     
    	private String user;
    	private String password;
     
    }
    J'aurais aimer avoir des critiques sur cette manière de procéder.

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 166
    Points
    4 166
    Par défaut
    Attention, pas besoin de charger ton driver SQL à chaque demande de connexion.
    Tu peux le faire une fois pour toute, par exemple dans un bloc static de class.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public class AccessManagerDAO {
      static {
        Class.forName(driver);
      }
    }

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2013
    Messages : 40
    Points : 29
    Points
    29
    Par défaut
    Merci, j'ai modifié le code, afin de plus charger le driver sql.

    Je met le sujet en résolut ayant trouvé la solution au problème.

    Merci de votre aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Data] Faire appel à l'instance d'un DAO
    Par Johnbob dans le forum Spring
    Réponses: 5
    Dernier message: 30/05/2009, 14h47
  2. Instance DAO corrompue (ObjectStream)
    Par Alain Defrance dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 06/02/2009, 11h43
  3. Instance de User Control => null reference
    Par Dude1205 dans le forum ASP.NET
    Réponses: 9
    Dernier message: 20/08/2007, 14h54
  4. Instance de user control => null reference
    Par Dude1205 dans le forum VB.NET
    Réponses: 7
    Dernier message: 20/08/2007, 12h28
  5. Réponses: 1
    Dernier message: 18/07/2007, 18h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo