Hikari is
a JDBC connection pool that is used by many applications.
How to
configure hikari connection pool?
application.yml
spring:
datasource:
communicationtimeout: 60000
jpa:
hibernate:
ddl-auto: none
hikari:
connection-timeout: 250000
idle-timeout: 300000
max-lifetime: 1000000
maximum-pool-size: 20
jpa:
hibernate:
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
database-platform: org.hibernate.dialect.H2Dialect
---
spring:
jpa:
properties:
hibernate:
show_sql: true
format_sql: false
Define DataSource.
@ConfigurationProperties(prefix = "spring.datasource.hikari")
@Bean
public DataSource dataSource() {
HikariDataSource dataSource = new HikariDataSource();
dataSource.setDriverClassName("org.h2.Driver");
dataSource.setJdbcUrl("jdbc:h2:file:~/db/myOrg.db;DB_CLOSE_ON_EXIT=FALSE;DB_CLOSE_DELAY=-1;");
dataSource.setUsername("krishna");
dataSource.setPassword("password123");
return dataSource;
}
Find the
below working example.
package com.sample.app.entity;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "employees")
public class Employee {
@Id
@GeneratedValue
private int id;
private String firstName;
private String lastName;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
@Override
public String toString() {
return "Employee [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + "]";
}
}
EmployeeRepository.java
package com.sample.app.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import com.sample.app.entity.Employee;
public interface EmployeeRepository extends JpaRepository<Employee, Integer>{
}
AppConfigurations.java
package com.sample.app.config;
import javax.sql.DataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.zaxxer.hikari.HikariDataSource;
@Configuration
public class AppConfigurations {
@ConfigurationProperties(prefix = "spring.datasource.hikari")
@Bean
public DataSource dataSource() {
HikariDataSource dataSource = new HikariDataSource();
dataSource.setDriverClassName("org.h2.Driver");
dataSource.setJdbcUrl("jdbc:h2:file:~/db/myOrg.db;DB_CLOSE_ON_EXIT=FALSE;DB_CLOSE_DELAY=-1;");
dataSource.setUsername("krishna");
dataSource.setPassword("password123");
return dataSource;
}
}
App.java
package com.sample.app;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import com.sample.app.entity.Employee;
import com.sample.app.repository.EmployeeRepository;
@SpringBootApplication
public class App {
@Autowired
private EmployeeRepository empRepo;
public static void main(String args[]) {
SpringApplication.run(App.class, args);
}
@Bean
public CommandLineRunner demo() {
return (args) -> {
Employee emp1 = new Employee();
emp1.setFirstName("Ram");
emp1.setLastName("Ponnam");
empRepo.save(emp1);
empRepo.findAll().forEach(System.out::println);
};
}
}
application.yml
spring:
datasource:
communicationtimeout: 60000
jpa:
hibernate:
ddl-auto: none
hikari:
connection-timeout: 250000
idle-timeout: 300000
max-lifetime: 1000000
maximum-pool-size: 20
jpa:
hibernate:
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
database-platform: org.hibernate.dialect.H2Dialect
---
spring:
jpa:
properties:
hibernate:
show_sql: true
format_sql: false
Total
project structure looks like below.
Run
App.java, you can see below messages in console.
Employee
[id=1, firstName=Ram, lastName=Ponnam]
You can
download complete working application from this link.
No comments:
Post a Comment