2009-08-27 4 views
1

J'utilise un DBConnection de classe qui a une méthode statique createConnection.I créer un objet de connexion commeFermeture d'une connexion

Connection con=DBConnection.createConnection(); 

Je ne pas oublier de fermer le long des déclarations et resultsets.

Maintenant, comment est-ce différent ayant le même DBConnection ayant une createConnection méthode normale et créer un nouvel objet de connexion comme

DBConnection dbConnection=new DBConnection(); 
Connection con=dBConnection.createConnection(); 

et je ne ofcourse pas oublier de fermer les connexions, et la déclaration de résultats.

Un autre doute est de fermer un moyen de connexion le rendant éligible pour la collecte des ordures. la variable con sera maintenant égale à null?

Répondre

4

L'appel de la méthode statique sur une instance (deuxième exemple) aboutit exactement au même que d'appeler la méthode statique sans avoir d'instance (premier exemple). Gardez à l'esprit que la méthode statique DBConnection.createConnection() crée quand même une nouvelle instance de la connexion (méthode Factory), donc dans votre second exemple, vous créez effectivement deux instances (dbConnection et con).

La fermeture ne rend pas les instances de connexions éligibles au GC. La fermeture ferme simplement la connexion physique sous-jacente au SGBDR.

+0

En fait, sans connaître la source, il n'y a aucun moyen de savoir si son createConnection() crée de nouvelles connexions, renvoie des connexions à partir d'un pool, renvoie la même connexion avec chaque appel, etc –

+0

La seconde méthode appelle la méthode non statique de l'objet DBConnection. Quel sera le résultat de la variable de con après la fermeture? Est-ce que ce sera nul? –

+0

Bon point. Je suppose simplement que createConnection crée réellement la connexion;) –

Questions connexes