Newsgroup: it.comp.java
Titolo: dubbio amletico su connessioni db

Salve... Ho un piccolo dubbio su come usare le connessioni db...
Devo sviluppare un'applicazione mono utente... in alcuni casi per
costruire una select devo prendere dati da altre query... uso mysql 4.0...
Fino ad adesso mi sono organizzato con una connessione statica... sempre
quella.. perché se per ogni query creavo una nuova connessione mi si
impallava visto che superava il limite massimo di connessioni... è vero
che non le chiudevo... ma sono sempre rimasto con il dubbio...
E' Giusto aprire una nuova connessione ogni volta che faccio un query?
Se si fatemelo sapere che mi organizzo in questa direzione...
se No fatemelo sapere uguale e soprattutto ditemi voi come vi
organizzate... se volete perdetevi in discorsi astratti... ma spiegatelo
come se doveste spiegarlo ad un bambino.... 
Grazie mille... Danilo
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 E' Giusto aprire una nuova connessione ogni volta che faccio un query?
[cut]
In genere,dato che l'apertura di una connessione e' un operazione onerosa,
non lo si fa. Si usa invece un pool di connessioni, cioe' un insieme di
connessioni sempre aperte, che vengono riutilizzate.
Per un'applicazione mono utente forse non e' necessario, dato che
probabilmente verra' sempre utilizzata una sola connessione. Quindi il
metodo che hai usato finora va bene (ma la connessione va comunque chiusa
al termine dell'applicazione). Pero', se la tua applicazione usa piu' di
un thread, allora hai bisogno di piu' di una connessione.
-- 
Lucio Benfante
Java User Group Padova: 
http://www.jugpadova.it
Brainbench MVP for Java 1: 
http://www.brainbench.com
MyTranscript: 
http://www.brainbench.com/transcript.jsp?pid=167064

 E' Giusto aprire una nuova connessione ogni volta che faccio un query?
No. Le connessioni al database sono risorse da riutilizzare, inoltre č 
buona norma everne aperte il minimo indispensabile.
Se si tratta di un normale programma client-server č sufficiente *una* 
connessione che apri all'inizio e chiudi alla fine.
Se il programma č multithread, puoi scegliere se usare un pool di 
connessioni o semplicemente sincronizzare gli accessi (č fondamentale che 
non ci sia concorrenza nell'accesso ad una connessione).

 non ci sia concorrenza nell'accesso ad una connessione).
Nell'ambito di una web application basata su JSP-Servlet
come si dovrebbero gestire le connessioni al DB, in particolare
il ciclo di vita di una connessione quale dovrebbe essere ?
Grazie

 il ciclo di vita di una connessione quale dovrebbe essere ?
In j2ee, è corretto utilizzare un istanza DataSource come factory per le 
connessioni al database, il quale può gestire il pooling. 
Di norma, non è compito del servlet/JSP creare e/o mantenere l'istanza del 
DataSource. Il servlet dovrebbe ottenere l'istanza del DataSource tramite 
un naming service JNDI.
Una connessione "pooled" è una risorsa managed riusabile, il DataSource non 
apre una nuova connessione se è disponibile nel pool mentre il metodo close
() non chiude effettivamente la connessione ma la rende nuovamente 
disponibile nel pool.
 

 E' Giusto aprire una nuova connessione ogni volta che faccio un query?
Dipende. Se la connessione e' solo un front-end per un pool, "aprirla" non 
e' costoso (in quanto la connessione fisica e' gia' aperta). Altrimenti, 
no, non e' giusto nel senso che e' oneroso. Appunto, si mette un pool e si 
prelevano connessioni dal pool.
-- 
You dont know what to do when you dont know what you're doing.
http://space.tin.it/computer/csadun