[Spring Boot] DataSource

heiler·2025년 4월 21일

Spring Boot

목록 보기
2/3

DataSource는 데이터베이스와 같은 데이터 저장소에 대한 연결을 생성하고 관리하는 역할을 한다.

코드 내부를 살펴보면 javax.sql.DataSource는 Spring과 JDBC 사이에서 DB 연결을 관리하기 위한 인터페이스다. Spring은 이 DataSource 인터페이스를 기반으로 커넥션 풀, 트랜잭션 관리 기능을 제공한다. JPA, MyBatis와 같은 널리 사용되는 ORM 도구에서 기본 DB 연결 수단으로 사용된다.

Spring Boot에서 기본으로 HikariDataSource 구현체가 사용되며, application.yml 설정을 통해 세부 설정을 커스터마이징 할 수 있다.


DriverManager 대신 DataSource를 사용하는가?

기존 순수 JDBC는 DriverManager를 통해 직접 연결하는 방식을 사용한다.

Connection conn = DriverManager.getConnection(url, user, password);

DriverManager를 사용하면

  • 매번 연결을 새로 맺어야 하므로 성능에 부담이 된다.
  • Connection Pool 기능을 이용할 수 없다.

DataSource를 사용하면

  • Spring Boot를 사용한다면 application.yml 파일만 설정하면 DB 설정을 소스 코드와 분리해서 관리할 수 있다.
  • Connection Pool을 사용하여 효율적으로 연결을 관리할 수 있다.
  • HikariDatasource 외의 다른 구현체로도 유연하게 변경, 확장이 가능하다.

Java 코드 내에서 설정하는 방법

@Bean
public DataSource dataSource() {
    return DataSourceBuilder.create()
        .url("jdbc:mysql://localhost:3306/mydb")
        .username("heiler")
        .password("topsecret")
        .build();
}

application.yml에서 설정 방법

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: heiler
    password: topsecret
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.zaxxer.hikari.HikariDataSource
profile
Smiley

0개의 댓글