Respostas:
O pool de conexões com o banco de dados é um método usado para manter as conexões com o banco de dados abertas, para que possam ser reutilizadas por outras pessoas.
Normalmente, abrir uma conexão com o banco de dados é uma operação cara, principalmente se o banco de dados for remoto. Você precisa abrir sessões de rede, autenticar, ter a autorização marcada e assim por diante. O pool mantém as conexões ativas para que, quando uma conexão for solicitada posteriormente, uma delas seja usada, em vez de ter que criar outra.
Consulte o diagrama a seguir para os próximos parágrafos:
+---------+
| |
| Clients |
+---------+ |
| |-+ (1) +------+ (3) +----------+
| Clients | ===#===> | Open | =======> | RealOpen |
| | | +------+ +----------+
+---------+ | ^
| | (2)
| /------\
| | Pool |
| \------/
(4) | ^
| | (5)
| +-------+ (6) +-----------+
#===> | Close | ======> | RealClose |
+-------+ +-----------+
Em sua forma mais simples, é apenas uma chamada de API semelhante (1) a uma chamada de API de conexão aberta que é semelhante à chamada "real". Isso primeiro verifica o pool em busca de uma conexão adequada (2) e, se houver uma disponível, é fornecida ao cliente. Caso contrário, um novo é criado (3).
Uma "conexão adequada" é apenas uma que já tem acesso ao banco de dados usando as informações corretas (como instância do banco de dados, credenciais e possivelmente outras coisas).
Da mesma forma, há uma chamada de API próxima (4) que na verdade não chama a conexão estreita real , mas coloca a conexão no pool (5) para uso posterior. Em algum momento, as conexões na piscina podem estar realmente fechadas (6).
Essa é uma explicação bastante simplista. As implementações reais podem ser capazes de lidar com conexões com vários servidores e várias contas de usuário, elas podem pré-alocar algumas linhas de base de conexões, para que algumas estejam prontas imediatamente, e podem realmente fechar conexões antigas quando o padrão de uso se acalmar.
As imagens falam mais que mil palavras (paxdiablo deu uma descrição incrível):
Você pode usar a biblioteca apache commons para implementar o pool de conexão de forma transparente: http://commons.apache.org/dbcp/
O DBCP também é um pool de hibernação suportado: http://www.informit.com/articles/article.aspx?p=353736&seqNum=4
Conceito de pool de conexão não apenas em Java, mas em várias linguagens de programação. Criar um novo objeto de conexão é dispendioso, portanto, um número fixo de conexões é estabelecido e mantido no ciclo de vida, criando um pool virtual Java Just ( http://javajust.com/javaques.html ), consulte a pergunta 14 nesta página