Configurando um pool de conexão Hikari com inicialização por mola
1. Visão geral
Hikari é uma implementação JDBCDataSource que fornece um mecanismo de pool de conexão.
Comparado a outras implementações, ele promete ser leve ebetter performing. Para obter uma introdução ao Hikari, consultethis article.
Este tutorial rápido mostra como podemos configurar um aplicativo Spring Boot 1 ou Spring Boot 2 para usar o HikariDataSource.
Leitura adicional:
Relacionamento individual na JPA
Aprenda três maneiras diferentes de manter um relacionamento individual com a JPA.
Inicialização de mola com hibernação
Uma introdução rápida e prática à integração do Spring Boot e do Hibernate / JPA.
2. Configurando Hikari com Spring Boot 1.x
Spring Boot 1.x usaTomcat JDBC Connection Pool por padrão.
Assim que incluirmosspring-boot-starter-data-jpa em nossopom.xml, incluiremos transitivamente uma dependência para a implementação do Tomcat JDBC. Durante a execução, o Spring Boot criará um TomcatDataSource para nós usarmos.
Para configurar o Spring Boot para usar o Hikari Connection Pool, temos duas opções.
2.1. Dependência do Maven
Primeiro, precisamos incluir a dependência de Hikari em nossopom.xml:
com.zaxxer
HikariCP
3.2.0
A versão mais atual pode ser encontrada emMaven Central.
2.2. Configuração explícita
A maneira mais segura de dizer ao Spring Boot para usar o Hikari é configurar explicitamente a implementação do DataSource.
Para fazer isso, simplesmenteset the property spring.datasource.type to the fully-qualified name of the DataSource implementation we want to use:
@RunWith(SpringRunner.class)
@SpringBootTest(
properties = "spring.datasource.type=com.zaxxer.hikari.HikariDataSource"
)
public class HikariIntegrationTest {
@Autowired
private DataSource dataSource;
@Test
public void hikariConnectionPoolIsConfigured() {
assertEquals("com.zaxxer.hikari.HikariDataSource", dataSource.getClass().getName());
}
}
2.3. Removendo a Dependência JDBC do Tomcat
A segunda opção é permitir que o Spring Boot encontre a própria implementação HikariDataSource.
If Spring Boot cannot find the Tomcat DataSource in the classpath, it will automatically look for the Hikari DataSource next. O algoritmo de descoberta é descrito emreference manual.
Para remover o Tomcat Connection Pool do classpath, podemos excluí-lo em nossopom.xml:
org.springframework.boot
spring-boot-starter-data-jpa
org.apache.tomcat
tomcat-jdbc
Agora, o teste da seção anterior também funcionará sem configurar a propriedadespring.datasource.type.
3. Configurando Hikari com Spring Boot 2.x
No Spring Boot 2, Hikari é a implementação padrão do DataSource.
Isso é o que mudou no Spring Boot 1.x:
-
a dependência de Hikari agora é incluída automaticamente emspring-boot-starter-data-jpa
-
o algoritmo de descoberta que determina automaticamente uma implementaçãoDataSource agora prefere Hikari em vez de TomcatJDBC (consultereference manual).
Portanto, não temos nada a fazer se quisermos usar o Hikari em um aplicativo baseado no Spring Boot 2.x.
4. Ajustando os parâmetros de configuração do Hikari
Uma das vantagens do Hikari sobre outras implementações deDataSource é o fato de que ele oferece muitos parâmetros de configuração.
Podemos especificar os valores para esses parâmetros usando o prefixospring.datasource.hikarie anexando o nome do parâmetro Hikari:
spring.datasource.hikari.connectionTimeout=30000
spring.datasource.hikari.idleTimeout=600000
spring.datasource.hikari.maxLifetime=1800000
...
Uma lista de todos os parâmetros Hikari com uma boa explicação está disponível emHikari Github Site.