Olá desenvolvedores, neste tutorial falaremos sobre POOL de Conexões c3p0 integrado ao JPA – Java Persistence API, visto que qualquer aplicação que precisa acessar a base de dados deverá estar preparada para receber múltiplos acessos simultâneos.
Imagina o que aconteceria se você tivesse dezenas de clientes fazendo requisições de acesso ao banco de dados, no entanto, existe apenas uma única porta aberta. Como neste caso, é impossível que todos eles consigam acesso simultâneo, o que acontecerá com os usuários acessando o sistema em fila é uma sobrecarga no sistema. Na melhor das hipóteses ele só ficará lento. Mas se sua aplicação não estiver preparada para tantos acessos recorrentemente ela ficará fora do ar. É neste cenário que o POOL de conexões se insere.
O POOL mantém um certo número de conexões abertas com o banco de dados. Assim, quando o cliente Java abre uma conexão usando o POOL, ao invés de abrir uma nova conexão com o banco usando o JDBC – Java Database Connectivity, uma conexão aberta já existente é aproveitada sendo alocada para o cliente que solicitou a conexão.
VANTAGENS
Há inúmeras vantagens de se usar o POOL de conexões, com ele haverá ganho de velocidade na aplicação, além de evitar que conexões fiquem presas. Mas não apenas isso, o POOL promove um monitoramento de conexões não usadas e gerenciamento de transações na base dedos, elevando assim a performance do sistema.
DEPENDÊNCIA DO C3P0
O primeiro passo para configurar o c3p0 é baixar a dependência inserindo o código correspondente no arquivo pom.xml. Você poderá copiar a dependência como mostra a imagem ou obtê-la diretamente do repositório Maven. Fortemente recomendo o uso da mesma versão do Hibernate que está sendo utilizada no projeto.
PROPRIEDADES DE CONFIGURAÇÃO
No arquivo de persistência persistence.xml adicionaremos as propriedades de configuração. Informaremos primeiramente qual será a quantidade mínima de portas abertas, isto é, de conexões que estarão disponíveis, vamos inicialmente definir que 5 serão o suficiente.
<property name=“hibernate.c3p0.min_size” value=”5” >
Embora não usual, podemos definir também o valor máximo de conexões abertas disponíveis. Esta limitação, somente é usada em casos onde já se sabe, a base de dados suporta apenas um dado limite de conexões simultâneas.
<property name=“hibernate.c3p0.max_size” value=”100” >
Determinaremos ainda o tempo máximo, em milissegundos, que uma conexão inativa deverá ser mantida no pool.
<property name=“hibernate.c3p0.timeout” value= “300” >
E mais, poderemos determinar o total de transações, operações e/ou instruções SQL – Structured Query Language, mantida em cache.
<property name=“hibernate.c3p0.max_statements” value= “50” >
Cabe determinar também o tempo ocioso em segundos que uma conexão deverá aguardar até ser validada automaticamente.
<property name=“hibernate.c3p0.idle_test_period” value= “120” >
EM POUCAS PALAVRAS
Com estas poucas configurações já é possível assegurar uma boa performance para o sistema. Implementando o c3p0 dentro do projeto uma série de problemas de conexão poderão ser corrigidas e/ou evitadas, agora que você já conhece. Eu fico por aqui e nos vemos no próximo tutorial quando iniciaremos uma nova série de tutoriais.