Na realidade não é bem isso, o driver permite que sejam feitas quantas conexões forem necessarias, o problema é o seguinte:
Em uma aplicação servidora você tem basicamente 2 opções para conexões, você pode abrir uma conexão para cada solicitação, e fecha-la quando a solicitação terminar, o problema é que abrir uma conexão com o banco é um processo muito custoso, que depende de trafego de rede, autenticação, etc, e isso pode ficar muito lento caso o numero de conexões seja grande…
A opção pra resolver o problema de abrir uma conexão para cada requisição é abrir uma conexão só, e mante-la aberta, e todas as requisições são enviadas para essa conexão. O problema nesse caso é que só é possível executar uma transação por vez na conexão, os clientes terão que enfileirar-se para acessar o banco.
Então, como diria o pessoal do interior, “você sai do espeto e cai na brasa”. Ahh não ser que você use um “Pool de conexões” que resolve os 2 problemas, mantendo uma serie de conexões abertas e distribuindo elas para os clientes à medida que eles solicitam e mantendo elas abertas apos os clientes usa-las para que possam ser usadas novamente. Assim você não precisa abrir uma conexão toda hora, mas não precisa ter uma só e enfileirar os clientes.
Existem vários gerenciadores de Pool como C3P0, DBCP, etc… a unica coisa que fazem é abrir uma conexão normal, e mantê-la aberta, gerenciado todo seu ciclo de vida…
Eles podem ser usados por qualquer tipo de aplicação, mas os servidores de aplicação geralmente tem um gerenciador interno próprio ou algum desses aí embutido…
Caso sua aplicação desktop seja uma aplicação stand alone, não justifica usar um Pool de conexões, pois haverá sempre uma unica conexão, porem se houver um servidor ao qual essa aplicação se conecte, como EJB, RMI, etc, e esse servidor for responsável pelas transações com o banco, aí sim é altamente recomendável que seja usado um Pool.
Ou seja, o pool não se restringe a uma aplicação web, e sim a qualquer aplicação servidora, geralmente toda aplicação web usa pois ela sempre é uma aplicação servidora.
http://jakarta.apache.org/commons/dbcp/