Na própria aula, cada vez que o instrutor executa o método main da classe TestaPoolConexoes, o número de conexões só aumentam. 15, 30... etc.
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Na própria aula, cada vez que o instrutor executa o método main da classe TestaPoolConexoes, o número de conexões só aumentam. 15, 30... etc.
Olá Wellington, tudo bem com você?
Peço desculpas pela demora em obter retorno.
A connection pool funciona como uma camada intermediária entre a aplicação e o banco de dados e seu propósito é melhorar a performance nas operações de banco de dados que são custosas para o sistema.
Ela mantém algumas conexões abertas que podem ser solicitadas pela aplicação para fazer consultas e comandos no banco de dados, tirando a necessidade de cada vez que a aplicação precisar fazer alguma consulta, abra uma nova conexão, prepare um comando, execute e feche a conexão, pois a conexão já vai estar sempre aberta. Quando uma conexão é fechada da aplicação com a connection pool a conexão não é fechada de verdade, a connection pool apenas marca essa conexão como disponível para uso de outro componente ou aplicação.
Quando são abertas conexões além das permitidas pela connection pool podem acontecer duas coisas:
1 - Quando ainda existem espaços para conexões disponíveis, a connection pool cria uma nova conexão para uso da aplicação.
2 - Quando não existem espaços, é jogada uma exceção.
Portanto, a connection pool mantém conexões sempre abertas e espera que a aplicação requisite o uso delas, a fim de melhorar a performance, por não ter que ficar abrindo e fechando conexões com o banco de dados.
Para se aprofundar ainda mais, recomendo a leitura desse artigo sobre como a pool de conexões melhora a performance de uma aplicação
Fico à disposição.
Um grande abraço e bons estudos!