O que é um pool de conexões? Para que server?Eu tenho de implementar? Já tem implementções prontas?Quando deveo usar?
agredeço o pessoal que quizer dar uma ajuda!!!
O que é um pool de conexões? Para que server?Eu tenho de implementar? Já tem implementções prontas?Quando deveo usar?
agredeço o pessoal que quizer dar uma ajuda!!!
Criar uma conexão num banco de dados é uma tarefa custosa. Envolve conexão, autenticação, criação de uma sessão para o usuário, validação de regras de segurança, etc. Isso se torna ainda pior se o usuário estiver rodando numa rede separada.
O segundo problema é que, a princípio, os usuários não deveriam manter a sua conexão aberta para sempre. Uma conexão aberta consome recursos, seja memória do servidor e espaço em disco, seja uma das licenças de uso (alguns BDs, como Oracle, tem um número de usuários máximo conectados simultaneamente).
Note que os problemas são ambíguos. Se por um lado o usuário deve evitar se conectar demais, por outro ele deve desconectar sempre que possível.
Como resolver o dilema?
Usa-se um Pool de conexões. Geralmente os pools de conexão mantém a conexão viva, até que um timeout estoure. Isso evita que o usuário desconecte entre statements que acontecem rapidamente. E isso também evita que, quando ele deixa de usar uma conexão, ela fique aberta para sempre. Os pools também tem recursos interessantes como limitar o número máximo e mínimo de conexões simultâneas.
Existem algumas boas implementações de Pools de conexão disponíveis. Eu citaria duas. A primeira, que trabalho juntamente com Spring com ótimos resultados é o Jakarta DBCP, parte do projeto commons: http://commons.apache.org/dbcp/
A segunda é o C3P0, mas é mais indicado para quem quer um pool super simples: http://sourceforge.net/projects/c3p0