반응형
H2 데이터베이스는 메모리 데이터베이스이기 때문에 데이터베이스를 따로 설치할 필요가 없어서 혼자 공부할 때 많이 사용됩니다.
참고: H2 설정 방법
그런데 H2 데이터베이스를 사용하면 좀 화나는 일이 있는데 프로그램을 다시 실행할 때마다 데이터베이스가 초기화된다는 것입니다.
프로그램의 오류를 발견해서 고쳐서 다시 실행하면 데이터를 처음부터 다시 넣어야 하는 것이죠.
이 때 resources 폴더 안에 import.sql 파일을 만들면 서버를 실행할 때마다 import.sql 안에 작성한 sql문을 실행합니다.
import.sql의 내용은 다음과 같습니다.
insert into t_user(user_id, user_name) values('hong', '홍길동');
insert into t_user(user_id, user_name) values('lim', '임꺽정');
insert into t_user(user_id, user_name) values('kim', '김유신');
insert into t_user(user_id, user_name) values('gang', '강감찬');
이다음 프로그램을 시작하면 다음과 같이 데이터가 들어갑니다.
만약 import.sql 대신 다른 이름을 쓰고 싶다면 application.properties에 다음과 같은 코드를 추가합니다.
spring.jpa.defer-datasource-initialization=true
spring.sql.init.data-locations=classpath:data.sql; //데이터 관련
spring.sql.init.schema-locations=classpath:schema.sql; // 테이블 생성 관련
spring.jpa.defer-datasource-initialization=true 옵션이 없다면 h2가 초기화돼서 DB에 테이블이 생성되는 것보다 data.sql을 통해 insert 되는 것이 먼저 일어나서 테이블을 찾을 수 없다는 에러가 발생합니다.
728x90
반응형
'Database ( DB ) > Database' 카테고리의 다른 글
[MariaDB] Mysql "Access denied for user 'root'@'localhost'" 오류 해결하는 방법 (0) | 2022.12.04 |
---|---|
MS SQL - 오류 : PKIX path building failed (1) | 2022.10.22 |
[MSSQL] SQL Server 구성 관리자를 찾을 수 없는 경우 (0) | 2022.10.12 |
CentOS7에 oracle 19c 설치 하는 방법 (0) | 2022.10.11 |
linux CentOS 7에 mssql 2019 install (0) | 2022.10.11 |