2010-01-20 4 views
5

J'essaye d'implémenter une solution avec c3p0 pour la première fois. Je comprends comment initialiser le pool de connexion et « checkout » une connexion de la piscine comme suit:c3p0 Connection Checkin

ComboPooledDataSource cpds = new ComboPooledDataSource(); 
cpds.setDriverClass(driverClass); 
cpds.setJdbcUrl(url); 
cpds.setUser(username); 
cpds.setPassword(password); 
Connection conn = cpds.getConnection(username, password); 

Mais j'ai du mal à trouver comment « checkin » une connexion déjà utilisé pour revenir dans la piscine. Comment ferais-je cela? Y at-il quelque chose que je fais mal ici?

Répondre

5

Libérer est totalement transparent pour l'utilisateur. Voir here pour plus d'explications.

Soyez sûr de fermer() la connexion et ne maintenez aucune autre référence (ce qui éviterait GC approprié).

+0

Merci, ça marche! – jtbradle

+0

le lien parle de "Nettoyage après c3p0 PooledDataSources", et ne pas libérer la connexion ... peut-être que le lien a changé depuis 2010 .... – OhadR

4

Je crois que la connexion est retournée à la piscine lorsque vous le fermez.

+2

Je me demandais si c'était le cas. Alors n'est-il pas vraiment fermé dans la source de données? Je suppose que c3p0 ne fait qu'encapsuler l'implémentation Connection de la source de données, intercepte l'appel close() et réutilise la connexion. Est-ce exact? – jtbradle