Si j'utilise une classe singleton pour une connexion à une base de données, un utilisateur peut-il fermer la connexion pour tout le monde?
J'ai écrit une classe singleton pour l'obtention d'une connexion de base de données.
Maintenant ma question est la suivante: supposons qu'il y a 100 utilisateurs accédant à l'application. Si un utilisateur ferme la connexion, pour les 99 autres utilisateurs de la connexion soit fermée ou pas?
C'est mon exemple de programme qui utilise une classe singleton pour obtenir une connexion de base de données:
public class GetConnection
{
private GetConnection()
{
}
public Connection getConnection()
{
Context ctx = new InitialContext();
DataSource ds = ctx.lookup("jndifordbconc");
Connection con = ds.getConnection();
return con ;
}
public static GetConnection getInstancetoGetConnection ()
{
//which gives GetConnection class instance to call getConnection() on this .
}
}
Merci de me guider.
source d'informationauteur hanhu | 2011-07-04
Vous devez vous connecter pour publier un commentaire.
Aussi longtemps que vous n'avez pas de retour de la même
Connection
exemple surgetConnection()
appel, alors il n'y a rien à craindre. Chaque appelant ne puis obtenir sa propre instance. Autant maintenant, vous êtes en train de créer une nouvelle marque de connexion sur tous lesgetConnection()
appel et n'est donc pas la restitution d'une partie statique ou variable d'instance. Donc, c'est sûr.Cependant, cette approche est maladroit. Il n'a pas besoin d'être un singleton. Un helper/classe utilitaire est également parfaitement bien. Ou si vous voulez un peu plus d'abstraction, un gestionnaire de connexion retourné par un résumé de l'usine. J'avais seulement le modifier pour obtenir la source de données en une seule fois lors de l'initialisation de la classe au lieu de chaque fois que dans
getConnection()
. C'est la même instance à chaque fois de toute façon. Gardez à bon marché. Voici une base de lancement pour exemple:qui est utilisé comme suit selon la normale JDBC idiome.
Voir aussi:
Pour fermer la Connexion
À l'appel à la connexion:
Code ci-dessous est un travail et testé le Pattern Singleton pour Java.
Lors de l'obtention de Connexion dans n'importe quelle Classe tout simplement utiliser en dessous de la ligne
Espère que ça peut aider 🙂