H2 DataBase:
。Java로 작성된오픈소스 RDBMS
。Spring Boot가 지원하는In-Memory형식의RDBMS
▶Application의 재구동시 초기화.
。개발용도의Local DB로 사용이 용이
▶로컬또는테스트 환경에서 주로 사용됨.
。CI/CD를 구현하는 경우,JPA에 대한슬라이스 테스트 파일이 존재하는 경우,JPA는DB 의존성이 필요하므로,application-test.yml을 정의후H2 DB를 의존하도록 설정
▶CI/CD 환경에서테스트시 별도DB 설정없이테스트가 가능하므로.runtimeOnly 'com.h2database:h2' testImplementation 'com.h2database:h2' implementation 'org.springframework.boot:spring-boot-starter-data-jdbc'。
application.yml에서 다음 구문을 통해H2-DB사용설정
▶Spring JDBC도 추가정의해야 사용가능
H2 DB는Test DB로서의 성능이 매우 좋다
。인메모리 DB이므로, 일반디스크상에서 동작하는MySQL에 비해디스크 I/O가 발생하지 않아 성능이 뛰어난 특징이 존재.
▶MySQL로테스트를 수행하는 경우,DB Connection 수의과부하가 발생하므로H2를 사용spring: sql: init: mode: always h2: console: enabled: true datasource: url: jdbc:h2:mem:testdb;MODE=MySQL;NON_KEYWORDS=USER;DATABASE_TO_LOWER=TRUE;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE username: sa password: driver-class-name: org.h2.Driver▶
MYSQL과네이밍 규칙통일
▶H2 console접속 시 필요한JDBC URL은동적으로 변화하므로 다음정적 JDBC URL로 고정
。이후 http://localhost:8080/h2-console 로 접속
sql파일을 생성하여H2 DB초기 설정 table 및 데이터 설정implementation 'org.springframework.boot:spring-boot-starter-data-jpa'。
spring-boot-starter-data-jpa를 활용 시 Application이 구동 및 초기화될때 자동으로schema.sql을 참조하여 H2-DataBase에 table 생성.
。H2-DB는In-Memory DB이므로어플리케이션의재구동마다 데이터 초기화되므로Application의재구동마다 실행할 초기값 정의용.sql파일을 생성