https://docs.spring.io/spring-boot/reference/data/sql.html
1. 프로젝트 설정
1-1. 의존성 추가
Sprign Boot 프로젝트의 build.gradle 또는 pom.xml 파일에 필요한 의존성을 추가합니다.
Gradle 예시
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jdbc' // JDBC API
implementation 'org.mariadb.jdbc:mariadb-java-client' // MariaDB JDBC 드라이버
}
2. 데이터베이스 설정
2-1. application.properties
# 데이터베이스 URL 및 인증 정보
spring.datasource.url=jdbc:mariadb://localhost:3306/your_database_name
spring.datasource.username=your_username
spring.datasource.password=your_password
# JDBC 기본 설정
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.initialization-mode=always
2-2. application.yml (YAML 형식)
spring:
datasource:
url: jdbc:mariadb://localhost:3306/your_database_name
username: your_username
password: your_password
driver-class-name: org.mariadb.jdbc.Driver
initialization-mode: always
DataSource?
- 데이터베이스 연결 풀(Connection Pool)을 생성, 관리하고, 효율적인 연결 재활용을 제공한다.
- Spring Boot는 DataSource를 자동으로 구성하며, 주요 구현체로는 HikariCP, Apache DBCP, Tomcat JDBC Connection Pool 등이 사용됩니다.
- 기본적으로 Spring Boot는 HikariCP를 사용.
3. DataSource를 직접 확인
Spring Boot에서 구성된 DataSource 객체를 직접 확인하려면 @Bean이나 @Autowired를 사용하여 주입받을 수 있다.
확인용 Controller 작성
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.sql.DataSource;
@RestController
public class DataSourceController {
@Autowired
private DataSource dataSource;
@GetMapping("/datasource-info")
public String getDataSourceInfo() {
StringBuilder info = new StringBuilder();
info.append("DataSource Class: ").append(dataSource.getClass().getName()).append("<br>");
try {
info.append("JDBC URL: ").append(dataSource.getConnection().getMetaData().getURL()).append("<br>");
info.append("DB Username: ").append(dataSource.getConnection().getMetaData().getUserName()).append("<br>");
} catch (Exception e) {
info.append("Error retrieving DataSource info: ").append(e.getMessage());
}
return info.toString();
}
}
실행 결과
애플리케이션을 실행한 뒤 브라우저에서 http://localhost:8080/datasource-info로 접속하면 DataSource 정보가 출력됨.
4. DataSource를 Bean으로 명시적 등록하기
Spring Boot의 자동 설정 대신 명시적으로 DataSource를 정의할 수 있음
명시적 등록 예제
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.zaxxer.hikari.HikariDataSource;
import javax.sql.DataSource;
@Configuration
public class DataSourceConfig {
@Bean
public DataSource dataSource() {
HikariDataSource dataSource = new HikariDataSource();
dataSource.setJdbcUrl("jdbc:mariadb://localhost:3306/your_database_name");
dataSource.setUsername("your_username");
dataSource.setPassword("your_password");
dataSource.setMaximumPoolSize(10); // 최대 커넥션 수
return dataSource;
}
}
5. 커넥션 풀 기본 개념
Spring Boot의 기본 데이터베이스 연결 풀인 HikariCP의 특징 :
- 빠르고 경량화된 커넥션 풀
- 최소 / 최대 커넥션 풀 크기를 조정 가능
- spring.datasource.hikari를 통해 세부 설정 가능
주요 설정 옵션:
설정 키 | 설명 | 기본값 |
spring.datasource.hikari.maximum-pool-size | 최대 커넥션 풀 크기 | 10 |
spring.datasource.hikari.minimum-idle | 최소 유휴 커넥션 수 | 10 |
spring.datasource.hikari.connection-timeout | 연결 대기 시간(ms) | 30000 |
spring.datasource.hikari.idle-timeout | 유휴 커넥션 제거 시간(ms) | 600000 |
'Spring' 카테고리의 다른 글
MyBatis 개요 (0) | 2024.12.15 |
---|---|
RowMapper와 BeanPropertyRowMapper (1) | 2024.12.15 |
JDBC API - JDBC Template (1) | 2024.12.14 |
[Spring] Java Bean vs POJO vs Spring Bean (0) | 2024.07.22 |
Spring Container (0) | 2024.07.20 |