H2 In-Memory란
For certain use cases (for example: rapid prototyping, testing, high performance operations, read-only databases), it may not be required to persist data, or persist changes to the data. This database supports the in-memory mode, where the data is not persisted.
In-Memory는 데이터 영속적인 저장 및 변경을 요구하지 않는 상황에서 사용되곤 한다. 예를 들어 빠른 프로토타입 개발이나 테스트 작업에 사용된다.
In some cases, only one connection to a in-memory database is required. This means the database to be opened is private. In this case, the database URL is jdbc:h2:mem: Opening two connections within the same virtual machine means opening two different (private) databases.
In-Memory 데이터베이스 설정을 위해 jdbc:h2:mem을 작성해 주면 됩니다. mem 끝에 :<DB-Name>을 작성합니다.
Sometimes multiple connections to the same in-memory database are required. In this case, the database URL must include a name. Example: jdbc:h2:mem:db1. Accessing the same database using this URL only works within the same virtual machine and class loader environment.
application-test.yml
저는 test 환경에서 H2 In-Memory 데이터베이스를 사용하였습니다.
In-Memory 데이터베이스에 테이블이 생성되는 것을 확인하기 위해 main 패키지 내부에 test 설정 파일을 작성하였습니다.
test 패키지 내부에 test.yml을 두고 사용할 수도 있습니다.
spring:
datasource:
driver-class-name: org.h2.Driver
url: jdbc:h2:mem:testdb;MODE=MySQL;
username: sa
password:
jpa:
hibernate:
ddl-auto: create-drop
database-platform: org.hibernate.dialect.H2Dialect
show-sql: true
properties:
hibernate:
format_sql: true
h2:
console:
enabled: true
path: /h2-console
/h2-console 접속하기
로컬 기준으로 localhost:8080/h2-console 에 접속하면 생성된 데이터베이스를 확인할 수 있습니다.
- JDBC URL : 설정한 url을 작성합니다.
- username, password: 설정한 username, password를 작성합니다.
참고 자료
https://www.h2database.com/html/features.html#in_memory_databases