초기 데이터를 설정하기 위해 다음과 같이 코드를 구현한다.
여기서 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)
'BACKEND > Spring' 카테고리의 다른 글
RSA-256에 salt를 추가하면 어떤 게 좋을까? (0) | 2025.03.13 |
---|---|
[Spring boot] Service class에 @Transactional(readOnly = true)를 붙인 이유 (0) | 2024.08.10 |
[Spring boot] 비관락, 낙관락, 분산락 구현 (0) | 2024.08.08 |
[Spring] 스프링 AOP란? (0) | 2024.05.29 |
[Spring Boot] 캐싱 모니터링 k6 + InfluxDB + Grafana (0) | 2024.05.28 |