You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
H2 데이터베이스는 자바로 개발되어 있고, JVM 안에서 메모리 모드로 동작하는 특별한 기능을 제공한다. 그래서 애플리케이션을 실행할 때 H2 데이터베이스도 해당 JVM 메모리에 포함해서 함께 실행할 수 있다. DB를 애플리케이션에 내장해서 함께 실행한다고 해서 임베디드 모드 라고 한다.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
1️⃣ 테스트 - 임베디드 모드 DB
임베디드 모드
H2 데이터베이스는 자바로 개발되어 있고, JVM 안에서 메모리 모드로 동작하는 특별한 기능을 제공한다. 그래서 애플리케이션을 실행할 때 H2 데이터베이스도 해당 JVM 메모리에 포함해서 함께 실행할 수 있다. DB를 애플리케이션에 내장해서 함께 실행한다고 해서 임베디드 모드 라고 한다.
@Profile("test")test인 경우에만 데이터소스를 스프링 빈으로 등록한다.dataSource()jdbc:h2:mem:db이 부분이 중요하다. 데이터소스를 만들 때 이렇게만 적으면 임베디드 모드로 동작하는 H2 데이터베이스를 사용할 수 있다.DB_CLOSE_DELAY=-1: 임베디드 모드에서는 데이터베이스 커넥션 연결이 모두 끊어지면 데이터베이스도 종료되는데, 그것을 방지하는 설정이다.실행결과
Table "ITEM" not found이 부분이 핵심이다. 즉, 데이터베이스 테이블이 없는 것이다.테스트를 실행하기 전에 테이블을 먼저 생성해주어야 한다. 스프링 부트는 이 문제를 해결 할 아주 편리한 기능을 제공해준다.
스프링 부트 - 기본 SQL 스크립트를 사용해서 데이터베이스를 초기화하는 기능
메모리 DB는 애플리케이션이 종료될 때 함께 사라지기 때문에, 애플리케이션 실행 시점에 데이터베이스 테이블도 새로 만들어주어야 한다.
src/test/resources/schema.sql2️⃣ 테스트 - 스프링 부트와 임베디드 모드
스프링부트는 임베디드 데이터베이스에 대한 설정도 기본으로 제공한다. 스프링 부트는 데이터베이스에 대한 별다른 설정이 없으면 임베디드 데이터베이스를 사용한다.
src/test/resources/application.properties위와 같이 하면 데이터베이스에 접근하는 모든 설정 정보가 사라지게 된다.
별다른 정보가 없으면 스프링 부트는 임베디드 모드로 접근하는 데이터소스(
DataSource) 를 만들어서 제공한다.All reactions