-> JPA를 한마디로 정리하자면, "JUST Map Entities TO Tables"
-> 해당 깃허브 흐름
@Entity 어노테이션
을 붙여, 해당 todo bean이 - h2 데이터베이스 서버에 매핑되도록 해준다.
또 스프링부트의 놀라운 점은, @Entity가 붙은 자바 클래스를 발견하면, h2 데이터베이스에서 테이블을 자동으로 생성한다.
다시 말해, data.sql에 정의된 쿼리가 실행되기 전에 테이블이 생성되지 않은 경우다!
따라서 해당 에러 수정을 위해 application.properties에서 추가 설정을 해주자.
spring.jpa.defer-datasource-initialization=true
그리고 data.sql에 다음과 같은 sql 코드를 작성해보자.
INSERT INTO todo
(ID, USERNAME, DESCRIPTION, DEADLINE, DONE)
VALUES (10001, 'h2 server','start h2 DB', CURRENT_DATE(), false);
그리고 h2 database local server에서 확인하니,
자바코드에서 쿼리문을 통해 넣은 데이터가 → 로컬서버의 h2 서버에 잘 들어간 것을 확인할 수 있었다!
여기서 h2 database도 인메모리 데이터베이스이기에, 어플리케이션을 재실행하면 모든 h2서버에 저장한 데이터베이스가 사라진다.
그렇기에 MySQL 같은 데이터베이스를 사용하는 것!
참고 및 출처
이 시리즈는 Udemy 강의의 내용을 정리한 것입니다.
https://www.udemy.com/course/spring-boot-and-spring-framework-korean/