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.