Spring Boot 초기 데이터 세팅
Spring Boot에서 초기 데이터를 세팅할 때, 크게 3가지 방법이 있다. Spring Boot 애플리케이션 서버 시작 시 데이터를 초기화할 수 있는 CommandLineRunner 와 ApplicationRunner 그리고 애플리케이션 실행 도중 데이터 소스(Data Source)가 초기화될 때 실행되는 SQL 스크립트(data.sql)를 활용한 방법이다.
Spring Boot 서버 시작 시 데이터 초기화
애플리케이션이은 어떤 구조로 되어있나
JPA 활용
- 경로 : /global/config
💡CommandLineRunner
💡ApplicationRunner
ApplicationListener<ApplicationReadyEvent>
- 스프링에서 특정 event 가 발생했을 때, 특정한 행동을 할 수 있도록 제공하는 기능이 있다. 정도만 기억하고 있기
@Slf4j
@Component
@RequiredArgsConstructor
public class InitDataLoader implements ApplicationListener<ApplicationReadyEvent> {
private final RestaurantCategoryRepository restaurantCategoryRepository;
@Override
public void onApplicationEvent(ApplicationReadyEvent event) {
log.info("Init data loader started");
if (restaurantCategoryRepository.findAll().isEmpty()) {
List<String> list = List.of("한식", "중식", "일식");
// List<RestaurantCategoryRequest> categoryRequestList = list.stream()
// .map(RestaurantCategoryRequest::of)
// .toList();
// List<RestaurantCategoryEntity> restaurantCategoryEntityList = categoryRequestList.stream()
// .map(RestaurantCategoryEntity::of).toList();
// restaurantCategoryRepository.saveAll(restaurantCategoryEntityList);
List<RestaurantCategoryEntity> restaurantCategories = new ArrayList<>();
for (String category : list) {
RestaurantCategoryRequest request = RestaurantCategoryRequest.of(
category);
RestaurantCategoryEntity createCategory = RestaurantCategoryEntity.of(request);
restaurantCategories.add(createCategory);
}
restaurantCategoryRepository.saveAll(restaurantCategories);
}
}
}
SQL 스크립트
💡data.sql
실행 도중 데이터 소스(Data Source)가 초기화될 때가 언제야..?
- 위치 : resource/data.sql
- resource에서 File 생성
- spring boot 실행 시 생성 되도록 application.yml 에 설정해주기
# 초기 데이터 스크립트
sql:
init:
mode: always
platform: postgres
라이브러리
💡라이브러리
참고 자료
https://velog.io/@yeomyaloo/SpringBoot-서버-시작-시-데이터를-넣고-싶다면
[SpringBoot] - 서버 시작 시 데이터를 넣고 싶다면
서버 시작과 동시에 enum에 있는 데이터를 기본 값으로 넣어주고 시작하고 싶었다. 근데 여러 방법이 있으니까 그걸 좀 알아보고 적용해보고 싶었다
velog.io
'심화 > DB' 카테고리의 다른 글
| [DB] existById, findById (업데이트 중..) (0) | 2025.11.10 |
|---|---|
| [DB] NoSQL 장/단점 (0) | 2025.10.28 |
| [DB] NoSQL 특징 (0) | 2025.10.27 |
| [DB] Soft Delete (논리 삭제) vs Hard Delete (물리 삭제) (2) | 2025.10.16 |
| [DB] SQL 제약조건 (0) | 2025.09.20 |