Risposte:
Il pool di connessioni al database è un metodo utilizzato per mantenere aperte le connessioni al database in modo che possano essere riutilizzate da altri.
In genere, l'apertura di una connessione al database è un'operazione costosa, soprattutto se il database è remoto. Devi aprire le sessioni di rete, autenticarti, controllare l'autorizzazione e così via. Il pool mantiene attive le connessioni in modo tale che, quando in seguito viene richiesta una connessione, una delle connessioni attive viene utilizzata preferibilmente per crearne un'altra.
Fare riferimento al diagramma seguente per i prossimi paragrafi:
+---------+
| |
| Clients |
+---------+ |
| |-+ (1) +------+ (3) +----------+
| Clients | ===#===> | Open | =======> | RealOpen |
| | | +------+ +----------+
+---------+ | ^
| | (2)
| /------\
| | Pool |
| \------/
(4) | ^
| | (5)
| +-------+ (6) +-----------+
#===> | Close | ======> | RealClose |
+-------+ +-----------+
Nella sua forma più semplice, è solo una chiamata API simile (1) a una chiamata API a connessione aperta che è simile a quella "reale". Questo controlla innanzitutto la connessione idonea al pool (2) e, se disponibile, viene fornita al client. Altrimenti ne viene creato uno nuovo (3).
Una "connessione adatta" è solo una che ha già accesso al database usando le informazioni corrette (come istanza del database, credenziali e possibilmente altre cose).
Allo stesso modo, c'è una chiamata API stretta (4) che in realtà non chiama la vera connessione di chiusura, ma inserisce la connessione nel pool (5) per un uso successivo. Ad un certo punto, le connessioni nel pool potrebbero essere effettivamente chiuse (6).
Questa è una spiegazione piuttosto semplicistica. Le implementazioni reali possono essere in grado di gestire le connessioni a più server e account utente multipli, possono pre-allocare alcune linee di base di connessioni in modo che alcune siano pronte immediatamente e potrebbero effettivamente chiudere le vecchie connessioni quando il modello di utilizzo si attenua.
Le immagini parlano di mille parole (paxdiablo ha dato una descrizione fantastica):
È possibile utilizzare la libreria commons apache per l'implementazione del pool di connessioni in modo trasparente: http://commons.apache.org/dbcp/
DBCP è anche un pool Hibernate supportato: http://www.informit.com/articles/article.aspx?p=353736&seqNum=4
Concetto di pool di connessioni non solo in Java ma in molti linguaggi di programmazione. La creazione di un nuovo oggetto di connessione è costosa, pertanto viene creato e gestito un numero fisso di connessioni nel ciclo di vita creando un pool virtuale Java Just ( http://javajust.com/javaques.html ) vedere la domanda 14 in questa pagina