Just Do IT!

[Spring] DB Connection Pool과 Hikari CP란? 본문

개발 공부/Spring

[Spring] DB Connection Pool과 Hikari CP란?

MOON달 2024. 8. 12. 13:24
728x90
반응형

spring을 배우는 과정에서 db를 연동하는데 콘솔에

이런식으로 연동되는 걸 볼 수 있었다.

그래서 Hikari란 무엇인지, 그리고 정확하게 DB Connection이 무엇인지 정리해보려고 한다.

 

 

 

 

 

 

DataSource란?

  • 데이터소스(DataSource)는 물리적인 데이터 베이스에 연결하기 위한 팩토리이다.
  • 데이터베이스에 연동하기 위해 username, password, url을 사용한다.
  • mySQL을 사용을 예시로 들면, driver class name, url, username, password를 알아야 DB에 연동할 수 있다.

 

 

 

DB Connection Pool

 

일반적인 데이터 연동과정은 웹 어플리케이션이 필요할 때마다 데이터베이스에 연결하여 작업하는 방식인데,
필요할 때마다 연동해서 작업하면 데이터베이스 연결에 시간이 많이 걸리는 문제가 발생한다.

이를 해결하기 위해 웹 어플리케이션이 실행됨가 동시에 연동할 데이터베이스와의 연결을 미리 설정해준다.
필요할 때마다 미리 연결해놓은 상태를 이용해 빠르게 데이터베이스와 연동하여 작업을 한다.
이렇게 미리 데이터베이스와 연결시킨 상태를 유지하는 기술을 커넥션 풀(Connection Pool, CP)라고 한다.

자바에서는 기본적으로 DataSource 인터페이스를 사용하여 커넥션 풀을 관리한다.
Spring에서는 자동화된 기법을 제공하는데, 2.0 이후부터는 HikariCP를 기본 옵션으로 채택하고 있다.

 

 

JDBC란?

Java Database Connectivity의 약자로, 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API다.

JDBC는 데이터베이스에서 자료를 쿼리하거나 업데이트하는 방법을 제공한다.

 

 

왜 쓰는 걸까?

https://github.com/brettwooldridge/HikariCP#checkered_flag-jmh-benchmarks

 

GitHub - brettwooldridge/HikariCP: 光 HikariCP・A solid, high-performance, JDBC connection pool at last.

光 HikariCP・A solid, high-performance, JDBC connection pool at last. - brettwooldridge/HikariCP

github.com

공식 깃허브에 나온 비교를 보면 다른 오픈소스보다 빠른 걸 알 수 있다.

  1. 적은 메모리 사용량
  2. 높은 처리량
  3. 작은 코드 베이스
  4. 풍부한 구성 옵션
  5. 스레드 안정성

이러한 특징들로 인해 사용하는 걸 알 수 있다.

 

 

연동해보기

따로 추가할 필요 없이 spring으로 웹 프로젝트를 만들고,

org.springframework.boot:spring-boot-starter-jdbc을 추가하면 자동으로 추가된다.

 

그 이후에 DB를 연동하려면,

mapper xml 파일을 만들고, application.properties에서 설정을 해줘야 한다.

 

application.properties에 DB 연동 및 mybatis 설정

나는 mybatis를 사용했기에 mybatis 설정도 함께 해주었다.

 

 

mapper xml 파일 생성

 

이런 식으로 mapper 안에 sql문을 작성하여 연동하면 된다.

 

 

 

 

spring에서 Hikari를 설정하는 방법도 있지만,

아직 내가 사용하지 않아서 적지 않았다. 추후에 설정해주거나 사용해본다면 블로그 글로 작성해야겠다.

728x90