심화/DB

[DB] Spring Boot 초기 데이터 세팅 (업데이트 중..)

annovation 2025. 10. 21. 09:30

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