HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🤩
개발
/
Spring Data
Spring Data
/
📌
Spring JDBC(Java Database Connectivity)
/
🪥
Spring JDBC
🪥

Spring JDBC

DataSourceDataBase Connection Pool(DBCP)구현체 : HikariCPDataSource 만드는 방법 → DataSourceBuilderJDBC URL에 timezone 설정하는방법
  • Spring JDBC는 JDBC API 위의 추상화 계층을 제공함
  • JdbcTemplate 클래스가 이 계층에서의 핵심임

DataSource

  • Connection을 관리하는 주체. 얘를 통해 Connection을 얻거나 반납할 수 있음
  • 매번 Connection을 생성하고 닫는 과정에서 많은 리소스가 소비됨. ⇒ Connection Pool이라는 개념이 필요!
    • Connection Pool : 동시 접속자 수가 가질 수 있는 Connection을 하나로 모아놓고 관리한다는 개념
    • 데이터베이스와 연결된 Connection을 미리 만들어서 pool 속에 저장해 두고 있다가 필요할 때 Connection을 Pool에서 쓰고 다시 Pool에 반환하는 기법
  • 풀에서 커넥션을 몇개 만들어 놓고 Connection을 가져오는 행위를 DataSource를 통해서 할 수 있음

DataBase Connection Pool(DBCP)

https://brownbears.tistory.com/289
notion image
  • 이것의 구현체는 SimpleDriverDataSource(Test용) — 구현 코드를 보면 driver.connect() 를 이용해서 하기에 Connection Pool을 쓰는 것이 아닌 Single Connection을 사용
  • 실제로는 Connection Pool을 이용하기 위해서는 Apache Common에 DBCP, Hikari CP 등이 있음

구현체 : HikariCP

  • 2012년도 경에 만들어짐.
  • [참고]
    HikariCP
    Github
    HikariCP
    Owner
    brettwooldridge
    Updated
    Mar 25, 2024
  • Spring Boot에서 지원하는 Hikari 관련 설정들
  • [ JavaDevJournal ] Configure Hikari with Spring Boot
  • [ Velog ] Hikari Connection Pool
Connection Pool size = Tn * (Cm - 1) + 1 ( Tn : Thread 갯수, Cm : 하나의 태스크에서 동시에 필요한 Connection 수)

DataSource 만드는 방법 → DataSourceBuilder

@Bean public DataSource dataSource(){ var dataSource = DataSourceBuilder.create() .url("jdbc:mysql://database-2.ctzh5yr25fim.ap-northeast-2.rds.amazonaws.com:3306/ordermgmt") .username("root") .password("12345678") .type(HikariDataSource.class) // 구현체 넣을 수 있음 .build(); dataSource.setMaximumPoolSize(100); // pool에서 커넥션의 갯수도 조정가능함 dataSource.setMinimumIdle(100); return dataSource; }

JDBC URL에 timezone 설정하는방법

jdbc:mysql://localhost:3306/test?serverTimezone=UTC&characterEncoding=UTF-8
  • serverTimezone 파라미터의 역할 : DB와 Connection을 맺을 때, serverTimezone에 설정된 값으로 Timezone 인스턴스를 생성하여 생성된 Timezone으로 Connection을 맺음
    • 즉, Mysql에서 UTC 타임존을 쓴다 하더라도, serverTimezone=Asia/Seoul로 설정하면 해당 타임스탬프를 application 안으로 가져오면 Asia/Seoul timezone의 시간으로 변환되어짐