Pool de conexões com Spring Boot

De Wiki Integrator do Brasil
Ir para: navegação, pesquisa
Wiki-spring-boot.jpg

Índice

Sobre este tutorial

Os passos a seguir são baseados na documentação do Spring Boot. Nós iremos utilizar como exemplo o MySQL. Entretanto, serve para qualquer outro banco de dados. O programador que estiver lendo este tópico é orientado a procurar a documentação oficial para maiores detalhes e ajustes que desejar realizar.

Antes de Começar

As configurações e explicações técnicas sobre o uso de Pool de Conexões vão além deste tutorial. O suporte de hospedagem se reserva em fornecer apenas as informações sobre o conteúdo desta página, sem auxiliar tecnicamente o desenvolvedor.

Informações do Tutorial

As configurações possuem as seguintes configurações para serem substituídas:

  • BANCO - O nome do banco de dados criado no cPanel.
  • USUARIO - O nome do usuário atribuído ao banco de dados.
  • SENHA - A senha do usuário atribuído ao banco de dados.

Pool de Conexões com HikariCP

O padrão no uso do Spring Boot, na versão 2.x, é o HikariCP. Para usar o pool de conexões com o HikariCP, são necessárias várias informações relacionadas a ele.
O exemplo apresentado abaixo mostra como deve ficar o application.properties:

#Configurando a conexão
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost/BANCO
spring.datasource.username=USUARIO
spring.datasource.password=SENHA
#Configurando o pool de conexões
spring.datasource.hikari.connection-timeout=30000
spring.datasource.hikari.idle-timeout=600000
spring.datasource.hikari.max-lifetime=1800000
spring.datasource.hikari.connection-test-query=SELECT 1
spring.datasource.hikari.maximum-pool-size=40
spring.datasource.hikari.minimum-idle=8
spring.datasource.hikari.initialization-fail-timeout=2000
spring.datasource.hikari.isolate-internal-queries=true
spring.datasource.hikari.validation-timeout=3000
spring.datasource.hikari.data-source-properties.cachePrepStmts=true
spring.datasource.hikari.data-source-properties.prepStmtCacheSize=250
spring.datasource.hikari.data-source-properties.prepStmtCacheSqlLimit=2048
spring.datasource.hikari.data-source-properties.useServerPrepStmts=true
spring.datasource.hikari.data-source-properties.useLocalSessionState=true
spring.datasource.hikari.data-source-properties.rewriteBatchedStatements=true
spring.datasource.hikari.data-source-properties.cacheResultSetMetadata=true
spring.datasource.hikari.data-source-properties.cacheServerConfiguration=true
spring.datasource.hikari.data-source-properties.elideSetAutoCommits=true
spring.datasource.hikari.data-source-properties.maintainTimeStats=false


Pool de Conexões com Tomcat

O Apache Tomcat disponibiliza suas classes de operações com pool de conexões através da seguinte dependência que deve ser adicionada em seu POM.

<dependency>
	<groupId>org.apache.tomcat</groupId>
	<artifactId>tomcat-jdbc</artifactId>
</dependency>

Para utilizar o Pool de conexões, altere o application.properties:

#Configurando a conexão
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost/BANCO
spring.datasource.username=USUARIO
spring.datasource.password=SENHA
#Configurando o pool de conexões
spring.datasource.type = org.apache.tomcat.jdbc.pool.DataSource
spring.datasource.tomcat.initial-size=15
spring.datasource.tomcat.max-wait=20000
spring.datasource.tomcat.max-active=40
spring.datasource.tomcat.max-idle=15
spring.datasource.tomcat.min-idle=8
spring.datasource.tomcat.default-auto-commit=true 
spring.datasource.tomcat.validation-query=SELECT 1
spring.datasource.tomcat.validation-interval=3000
spring.datasource.tomcat.jmx-enabled=true
spring.datasource.tomcat.test-while-idle=false
spring.datasource.tomcat.test-on-borrow=true
spring.datasource.tomcat.test-on-return=false
spring.datasource.tomcat.log-abandoned=true
spring.datasource.tomcat.remove-abandoned=true
spring.datasource.tomcat.remove-abandoned-timeout=60
spring.datasource.tomcat.time-between-eviction-runs-millis=30000
spring.datasource.tomcat.min-evictable-idle-time-millis=30000
spring.datasource.tomcat.jdbc-interceptors=ConnectionState;StatementFinalizer;ResetAbandonedTimer