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)

- 이것의 구현체는 SimpleDriverDataSource(Test용) — 구현 코드를 보면
driver.connect()
를 이용해서 하기에 Connection Pool을 쓰는 것이 아닌 Single Connection을 사용
- 실제로는 Connection Pool을 이용하기 위해서는 Apache Common에 DBCP, Hikari CP 등이 있음
구현체 : HikariCP
- 2012년도 경에 만들어짐.
- [ 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의 시간으로 변환되어짐