floatfirstTOC: right
1️⃣ resource/db/data.sql
만들기
매번 데이터를 넣기 힘드니까, 서버가 실행되면 h2데이터베이스를 값이 들어간 상태로 초기할 수 있다.
insert into user_tb(username, password, email, created_at) values('ssar', '1234', 'ssar@nate.com', now()); insert into user_tb(username, password, email, created_at) values('cos', '1234', 'cos@nate.com', now()); insert into user_tb(username, password, email, created_at) values('love', '1234', 'love@nate.com', now());
2️⃣ application.yml
설정
server: servlet: encoding: charset: utf-8 force: true session: timeout: 30m port: 8080 spring: mustache: servlet: expose-session-attributes: true expose-request-attributes: true datasource: driver-class-name: org.h2.Driver url: jdbc:h2:mem:test;MODE=MySQL username: sa password: h2: console: enabled: true sql: init: data-locations: - classpath:db/data.sql jpa: hibernate: ddl-auto: create show-sql: true properties: hibernate: format_sql: true defer-datasource-initialization: true
defer-datasource-initialization: true ddl-auto가 된 후에 실행되게 하는 설정
sql: init: data-locations: - classpath:db/data.sql 스프링 실행할때 초기화하는 설정법
3️⃣ 테스트
🔹 쿼리가 서버가 실행하자 마자 초기화 하면서 쿼리가 실행이 되었다면 DB에 저장이 될 것이다.
🔹 혹시 저와 같은 메시지로 서버가 터졌다면 아래 해결 상자 펼처보기 해주세요.
//접속주소 http://localhost:8080/h2-console
Error creating bean with name 'dataSourceScriptDatabaseInitializer
에러 해결펼쳐보기
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSourceScriptDatabaseInitializer' defined in class path resource[org/springframework/boot/autoconfigure/sql/init/DataSourceInitializationConfiguration.class]: No data scripts found at location 'classpath:db/data.sql’
🔹 위의 메시지를 살펴보면 대략적으로 초기화 하지 못했다는 말과 함께
No data scripts found at location 'classpath:db/data.sql
가 눈에 띄인다.
🔹 파일을 찾지 못했다는 거 같아서 경로 설정이 내 예상과 다른거 같다고 의심해본다.
🔹 그래서 classpath:db/data.sql
의 경로를 templates/db/data.sql
로 변경해보았다.
다행히 한 번에 해결!! 서버가 안꺼지고 접속이 된다. 쿼리로 자료가 저장이 되었는지는 밖에서 시도 해보겠다.

테스트 확인, 정상 작동하고 있다.

⭐ 추가 수업 노트
🔹 인터페이스는 인터페이스를 상속할 수 있다. JpaRepository
🔹인터페이스는 new를 못한다.
🔹 인터페이스 메소드는 public도 필요없고, void로 메소드를 만든다.
🔹화면에 보이는 DTO, 클라이언트가 전송하는 데이터 requesetDTO,
- 고객이 보내는 데이터
🔹 ResponseDTO는 화면에 골라 뿌릴 정보만을 의미한다.
- 화면에 필요한 데이터