Usando c3p0 com Hibernate

Usando c3p0 com Hibernate

*1. Visão geral *

É muito caro estabelecer conexões com o banco de dados. O banco de dados https://www..com/java-connection-pool [pool de conexões] é uma maneira bem estabelecida de reduzir essas despesas.

Neste tutorial, discutiremos como usar c3p0 com o Hibernate para agrupar conexões.

===* 2. O que é c3p0? *

*c3p0 é*  *uma biblioteca Java que fornece uma maneira conveniente de gerenciar conexões com o banco de dados* .

Em suma, isso é possível criando um conjunto de conexões. Ele também efetivamente lida com a limpeza de Statements e ResultSets após o uso. Essa limpeza é necessária para garantir que o uso de recursos seja otimizado e que não ocorram conflitos.

*Esta biblioteca se integra perfeitamente a vários drivers JDBC tradicionais.* Além disso, fornece uma camada para adaptar os drivers JDBC baseados no DriverManager ao esquema __javax.sql.DataSource mais recente.

E, como o Hibernate suporta a conexão com bancos de dados pelo JDBC, é simples usar o Hibernate e o c3p0 juntos.

*3. Configurando o c3p0 com o Hibernate *

Vamos agora ver como configurar um aplicativo Hibernate existente para usar o c3p0 como seu gerenciador de conexões com o banco de dados.

====* 3.1 Dependências do Maven *

Primeiro, precisamos adicionar a hibernate-c3p0 dependência do maven:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-c3p0</artifactId>
    <version>5.3.6.Final</version>
</dependency>

Com o Hibernate 5, basta adicionar a dependência acima para ativar o c3p0.* Isso é verdade desde que nenhum outro gerenciador de conjuntos de conexões JDBC seja especificado. *

Portanto, depois de adicionarmos a dependência, podemos executar nosso aplicativo e verificar os logs:

Initializing c3p0-0.9.5.2 [built 08-December-2015 22:06:04 -0800; debug? true; trace: 10]
Initializing c3p0 pool... [email protected] [ ... default settings ... ]

Se outro gerenciador de conjuntos de conexões JDBC estiver sendo usado, podemos forçar nosso aplicativo a usar c3p0. Só precisamos definir o provider_class como C3P0ConnectionProvider em nosso arquivo de propriedades:

hibernate.connection.provider_class=org.hibernate.connection.C3P0ConnectionProvider

====* 3.2 Propriedades do conjunto de conexões *

Eventualmente, precisaremos substituir a configuração padrão. Podemos adicionar propriedades customizadas ao arquivo hibernate.cfg.xml:

<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.acquire_increment">5</property>
<property name="hibernate.c3p0.timeout">1800</property>

Da mesma forma, o arquivo hibernate.properties pode conter as mesmas configurações:

hibernate.c3p0.min_size=5
hibernate.c3p0.max_size=20
hibernate.c3p0.acquire_increment=5
hibernate.c3p0.timeout=1800

A propriedade min_size especifica o número mínimo de conexões que ele deve manter a qualquer momento.* Por padrão, ele manterá pelo menos três conexões *. Essa configuração também define o tamanho inicial do pool.

A propriedade max_size especifica o número máximo de conexões que ele pode manter a qualquer momento. Por padrão, ele manterá no máximo 15 conexões .

A propriedade acquire_increment especifica quantas conexões ele deve tentar adquirir se o pool ficar sem conexões disponíveis. Por padrão, ele tentará adquirir três novas conexões.

A propriedade timeout especifica o número de segundos que uma conexão não utilizada será mantida antes de ser descartada. Por padrão, as conexões nunca expiram do pool.

Podemos verificar as novas configurações de pool verificando os logs novamente:

Initializing c3p0-0.9.5.2 [built 08-December-2015 22:06:04 -0800; debug? true; trace: 10]
Initializing c3p0 pool... [email protected] [ ... new settings ... ]

Essas são as propriedades básicas do conjunto de conexões. Além disso, outras propriedades de configuração podem ser encontradas no official guide.

5. Conclusão

Neste artigo, discutimos como usar o c3p0 com o Hibernate. Examinamos algumas propriedades comuns de configuração e adicionamos c3p0 a um aplicativo de teste.

Para a maioria dos ambientes, recomendamos o uso de um gerenciador de conjuntos de conexões como c3p0 ou https://www..com/hikaricp [HikariCP] em vez dos drivers JDBC tradicionais.

Como de costume, o código-fonte completo deste tutorial está disponível em GitHub.