반응형
H2 DB의 장점은 테이블이 휘발성이기 때문에 서버를 다시 실행 시킬 때마다 깨끗한 DB에서 시작할 수 있다는 점이다.
하지만 테스트를 해야하는 입장에서 초기값을 매번 수동으로 넣는 것은 너무 비효율적이다.
그렇기에 서버를 실행 시킬 때마다 자동으로 값을 넣도록 만들었다.
resources 밑에 "import.sql" 파일을 만들어준다.
import.sql
INSERT INTO reading_record (title, author, date, sentence, comment) VALUES ('자바의 정석', '남궁성', '2025-04-18', '자바는 객체지향 언어다.', '기본기가 탄탄한 책이다.');
INSERT INTO reading_record (title, author, date, sentence, comment) VALUES ('토비의 스프링', '이일민', '2025-04-19', '스프링은 자바를 확장하는 방법론이다.', '스프링을 제대로 이해할 수 있다.');
INSERT INTO reading_record (title, author, date, sentence, comment) VALUES ('Effective Java', '조슈아 블로크', '2025-04-20', '불변 객체를 만들자.', '모범 사례를 배울 수 있다.');
나는 이렇게 값을 넣었다.
application.properties
#H2
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.sql.init.mode=always
#JPA
spring.jpa.defer-datasource-initialization=true
spring.jpa.hibernate.ddl-auto=create
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.sql.init.mode=always - 서버가 시작할 때마다 SQL 스크립트(schema.sql, data.sql 파일 등)를 항상 실행함.
spring.jpa.defer-datasource-initialization=true - JPA가 초기화되기 전에 데이터베이스를 먼저 준비함. (순서가 달라지면 문제가 될 수 있음)
spring.jpa.hibernate.ddl-auto=create - 서버 시작할 때 엔티티(Entity) 클래스 기반으로 데이터베이스 테이블을 새로 만듦.
이제 서버를 실행 시키고 http://localhost:8080/h2-console 에 가서 확인해보면
값이 들어가 있다!
반응형
'Spring Boot project' 카테고리의 다른 글
API-KEY, Bean 중복, Preflight (OPTIONS) 요청 (1) | 2025.04.19 |
---|---|
CORS 설정 (1) | 2025.04.18 |
제목, 작가, 날짜로 조회 (1) | 2025.04.17 |
H2 DB 설정 (1) | 2025.04.14 |
DTO 클래스 생성 Request, Response (1) | 2025.04.13 |