H2 DB Dummy Data
Spring boot H2 DB를 사용할 때 더미 데이터를 생성해야 하는 경우가 생깁니다.
어떻게 더미 데이터를 설정하는지 알아보도록 합시다.
Gradle과 H2 세팅 후 기준으로 설명을 하겠습니다.
application.properties에 하단 세줄을 추가해줍니다.
서버 기동 시 실행할 schema.sql 과 data.sql 파일의 경로를 적습니다.
application.properties
# H2 세팅
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
# 더미데이터 테이블 생성
spring.datasource.schema: classpath:h2/schema.sql
# 더미데이터 생성
spring.datasource.data: classpath:h2/data.sql
# 더미 데이터 생성 설정 always : 서버 재기동 마다 schema, data 새로 생성
spring.datasource.initialization-mode=always
schema.sql
제 sql 파일 경로는 /resource/h2/schema.sql 입니다.
PRODUCTS, MB_MBR 두 개의 테이블을 생성하는 예시입니다.
예시를 위해 컨벤션을 다르게 작성하였습니다.
DROP TABLE IF EXISTS Products;
CREATE TABLE Products
(
prod_id IDENTITY PRIMARY KEY,
prod_name VARCHAR(255) NOT NULL,
prod_price INT NOT NULL
);
-- 회원
DROP TABLE IF EXISTS MB_MBR;
-- 회원
CREATE TABLE "MB_MBR" (
"MBR_ID" IDENTITY PRIMARY KEY, -- 회원식별번호
"MBR_NM" VARCHAR(50) NOT NULL, -- 회원이름
"MBR_CP_NO" VARCHAR(30) NOT NULL, -- 회원연락처
"REG_DT" DATETIME NOT NULL, -- 등록일시
"MOD_DT" DATETIME NULL -- 수정일시
);
data.sql
제 sql 파일 경로는 /resource/h2/data.sql 입니다.
PRODUCTS, MB_MBR 두 개의 테이블의 Data를 생성하는 예시입니다.
예시를 위해 컨벤션을 다르게 작성하였습니다.
INSERT INTO Products (prod_name, prod_price) values ('롤휴지', 2700);
INSERT INTO Products (prod_name, prod_price) values ('슬리퍼', 3500);
INSERT INTO Products (prod_name, prod_price) values ('양말', 3000);
INSERT INTO Products (prod_name, prod_price) values ('우산', 8500);
INSERT
INTO MB_MBR
(MBR_NM, MBR_CP_NO, REG_DT)
VALUES
('이서진', '010-6666-6555', now())
, ('이수린', '010-3232-3444', now())
, ('박한민', '010-3232-3444', now())
, ('박진환', '010-3232-3444', now())
, ('강서준', '010-3232-3444', now())
, ('이세진', '010-3232-3444', now());
sql 파일 경로 이미지
이해를 돕기 위해 설정한 파일의 경로 이미지를 첨부합니다.
resource 폴더 아래 생성을 하였습니다.