Spring

Spring JPA connection pool

구티맨 2022. 9. 23. 15:03

Spring Boot JPA(2.x.x 기준)에서 사용 가능한 Connection Pool은 아래의 3가지가 있습니다.

 

Spring Boot 1.x.x 에서는 Tomcat을 Default로 사용하였으나

 

Spring Boot 2.0.0 에서부터 default JDBC connection pool(이하 'CP')을 Tomcat에서 HikariCP로 변경하였습니다.

 

그래서 spring-boot-starter-jdbc, spring-boot-starter-data-jpa를 사용하면, HikariCP(가장 높음) -> Tomcat pooling -> Commons DBCP2  의 우선 순위로 CP가 적용 됩니다.

 

위의 우선순위를 무시하고 spring.datasource.type에 값을 설정해서 CP를 바로 설정도 가능합니다.

spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource

물론, dependency도 추가를 해주어야 합니다.

implementation 'org.apache.tomcat:tomcat-jdbc:9.0.45'

 

JMH 벤치마크 결과

hikari와 tomcat의 벤치마크 결과를 보면 hikari가 압도적으로 성능이 좋습니다.

 

Spring Boot가 2.0.0으로 넘어갈 시기에 HikariCP가 Tomcat에 비해 성능이 월등히 좋아지게 되어 변경을 한것 같습니다.

 

spring boot datasource properties 값은 링크에서 참조바랍니다.

( hikariCP 사용시 spring.datasource.hikari.* tomcatCP 사용시 spring.datasource.tomcat.* 그리고 공통으로 적용되는 속성은 spring.datasource.* 에 설정하시면 됩니다. )