카테고리 없음

[Spring boot] 초기 데이터 설정

ckm7907 2024. 8. 8. 23:59

초기 데이터를 설정하기 위해 다음과 같이 코드를 구현한다.

여기서 defer-datasource-initialization: true 를 사용해서 초기 데이터를 추가하고 구현한다.

spring:
  config:
    import:
      - privacy.yml
  sql:
    init:
      mode: always

  datasource:
    url: jdbc:mysql://${test.db.host}:${test.db.port}/${test.db.database}?serverTimeZone=Asia/Seoul&characterEncoding=UTF-8
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: ${test.db.username}
    password: ${test.db.password}

  jpa:
    hibernate:
      ddl-auto: create
    database: mysql
    database-platform: org.hibernate.dialect.MySQL8Dialect
    #    database-platform: org.hibernate.dialect.H2Dialect
    #데이터베이스 초기화를 지연시키는 옵션. true 로 설정을하면 애플리케이션이 실행될 때 db를 초기화하지 않고 첫 데이터베이스 액세스 시 초기화를 수행(data.sql문 실행)한다.
    defer-datasource-initialization: true
    properties:
      hibernate:
        show_sql: false
        #        format_sql: false
        use_sql_comments: false
redis:
  host: ${test.redis.host}
  port: ${test.redis.port}
  password: ${test.redis.password}

 

여기서 같은 리소스에 data.sql 을 추가한다.

INSERT INTO member (create_date, email, is_deleted, modify_date, name, profile, refresh_token, id)
VALUES (TIMESTAMP '2024-05-19 00:00:00', 'test@test.com', false, TIMESTAMP '2024-05-19 00:00:00', 'test', NULL, '', 11);

INSERT INTO general_member (member_id, user_enc_password, id)
VALUES (11, '2492b60365ec438c50a4b37302790e61000eaf6866338c4f39d5d7c1cfdd4b78', 11);

INSERT INTO member_secret (member_id, salt, id)
VALUES (11, '7b6fcbe49833ef658d3f87e2cec1b83c', DEFAULT);

INSERT INTO login_attempt (count, login_recent_attemp, member_id, id)
VALUES (0, TIMESTAMP '2024-05-19 00:00:00', 11, DEFAULT);

INSERT INTO board (content,create_date,hit,member_id,modify_date,title,id) VALUES ('testContent',TIMESTAMP '2024-05-19 00:00:00',0,11,TIMESTAMP '2024-05-19 00:00:00','testTitle',11)