2013-02-04 4 views
0

J'ai une classe principale, une classe de connexion et une classe gui.Comment modéliser mon système - Implication de base de données

Dans mon principal je crée une connexion de base de données en utilisant le modèle de Singleton - une seule instance de cette connexion.

Je souhaite accéder à la connexion à la base de données à partir de la connexion, afin de vérifier les utilisateurs lors de la connexion au système.

Ma méthode de connexion dans le principal:

/** 
* Use the Singleton pattern to create one Connection 
*/ 
private static Connection getConnection() { 
    if (conn != null) { 
     return conn; 
    } 
    try { 
     Class.forName(driver); 
    } catch (ClassNotFoundException e) { 
     System.out.println(e.getMessage() + " load driver error"); 
     System.exit(0); 
    } 
    try { 
     //conn = DriverManager.getConnection(host); 
     conn = DriverManager.getConnection(host + "create=true", dbUsername, dbPassword); 
    } catch (SQLException e) { 
     displayErr("Get connection error: ", e); 
     System.exit(0); 
    } 
    return conn; 
} 

Maintenant, je veux créer une méthode de connexion où je dois utiliser la conn de connexion. La méthode est statique et je ne peux pas utiliser conn.

Je suis sûr que c'est faux, mais j'ai aussi essayé de faire une méthode publique qui retourne le conn de connexion, puis essayé d'appeler cette méthode de Main.

conn = Main.returnConnection(); 

Que dois-je faire dans cette situation? Assez confus à la façon dont je suis supposé modéliser ça.

Répondre

0

Je me suis rendu compte que le motif de Singleton est de créer une instance de quelque chose et de permettre à tout le monde de la voir.

Donc, je l'ai fait public vide statique à la place et peut maintenant accéder à la connexion, sans en faire une nouvelle à chaque fois. Corrigez-moi si je me trompe mais cela fonctionne très bien.

1

Votre approche est si primitive lorsqu'elle est comparée à Pooling de connexion. Le pool de connexions désigne un pool qui inclut des connexions réutilisables mises en cache pouvant être utilisées dans des demandes futures. Comme vous l'avez dit, l'ouverture d'une connexion pour chaque utilisateur est un processus coûteux qui donne également une connexion statique pour chaque conflit d'utilisateurs. La mise en commun des connexions est le standard qui devrait être utilisé dans ce genre de circonstances. Le code supérieur signifie obtenir une connexion à partir du pool, si toutes les connexions sont déjà allouées, le mécanisme en crée automatiquement un nouveau.

Les bibliothèques les plus populaires sont:

Questions connexes