Backend/SpringBoot

실행시 DB에 데이터 넣기

Dean83 2024. 11. 19. 08:53

서버 실행시 DB 테이블에 미리 데이터를 넣을 필요가 있을경우 사용(기본 or 필수 데이터) 3가지 방법이 있다. 

 

  • 데이터 넣기 (data.sql)
    • resources -> data.sql 생성 -> 쿼리문 작성
    • yml 파일 수정
      • defer-datasource-initialization : 'true' 설정
      • sql init mode always 설정
...

spring:
   jpa:
    ...
     defer-datasource-initialization: 'true'
   sql:
    init:
        continue-on-error: 'true'
        mode: always
...
  • 데이터 넣기 (@Transactional, @EventListener 어노테이션 이용)
    • @Component 를 이용해 클래스 생성
    • 클래스 내 init 함수 작성하고, 함수 위에 @EventListener(ApplicationReadyEvent.class) 어노테이션, @Transactional 추가
    • 클래스 내부에 데이터를 생성, service 를 통해 save 하는 함수 호출
  • 데이터 넣기 (ApplicationRunner 상속)
    • 클래스 생성 -> 클래스에 @Component 어노테이션 추가 -> ApplicationRunner 클래스 상속
    • 상속받은 클래스의 run 함수를 override
    • 서비스를 클래스의 맴버변수에 Inject 받고, 
    • run 함수 내부에서 데이터 생성, 서비스를 통해 저장 

'Backend > SpringBoot' 카테고리의 다른 글

전반적인 프로젝트 구조  (0) 2024.11.26
@Mapper, @Mapping  (0) 2024.11.20
AOP (함수 실행 intercept)  (0) 2024.10.30
QueryDSL  (0) 2024.10.30
DB 연결 설정  (0) 2024.10.29