2011-11-22 3 views
1

Hibernate에서 H2를 사용하여 유닛 테스트를 위해 즉석에서 메모리 내장 DB를 생성합니다. DB를 성공적으로 만들 수 있었고 모든 것이 정상적으로 작동합니다. 하지만 접근 방법을 모르는 문제가 있습니다. 테스트를 실행하기 전에 테스트를 위해 참조 데이터를 DB에로드해야합니다. DB를 처음부터 매번 생성하기 때문에 런타임에 데이터를 삽입하는 방법을 알아야하기 때문에이 데이터는 실시간 삽입시 한 번만 실행해야하는 SQL 삽입 파일로 저장되었습니다. 데이터는 매우 간단합니다. 국가 목록, 주 목록 등입니다. 가장 좋은 방법은 무엇입니까?데이터가있는 H2 메모리 내장 데이터베이스 초기화

btw, 모든 것이 스프링 프레임 워크에서 작동합니다.

답변

4

테스트를 위해 연결 생성시 init 스크립트를 실행할 수 있습니다. 난 당신이 최대 절전 모드를 사용하고 볼 수있는 질문 태그에서

http://www.h2database.com/html/features.html#execute_sql_on_connection

+0

비슷한 일을하려고하지만 많은 인덱스가있는 300MB 이상의 영구 DB가 있습니다. SQL 문장으로 변환하고 초기화하는 것은 매우 느립니다. 바이너리 DB 자체에서 초기화 할 수 있습니까? – HRJ

+0

@HRJ 내부적으로 우리는 jar 파일에 저장된 hsqldb db를 사용하고 있습니다. 그러나 나는 엄청난 양의 데이터로 테스트하지 않았다. –

0

. 클래스 경로 (예 : Maven 프로젝트 레이아웃을 사용하는 경우 src/main/resources)에 'import.sql'이라는 파일을 추가 할 수 있습니다. 최대 절전 모드는 처음부터 스키마를 만드는 경우 또한

From Spring documentation, 클래스 패스의 루트에있는 파일의 이름 import.sql는이 DDL-자동 등록이되어있는 경우 ( 시작시에 실행 합니다 create 또는 drop으로 설정). 이것은주의 깊으면 데모 및 테스트에 유용 할 수 있지만 은 프로덕션 클래스 패스에 있어야 할 항목이 아닐 수 있습니다. 이것은 Hibernate 기능입니다 (Spring과는 관계 없음).