Pool de conexões com Spring Boot
Í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