구성

H2 데이터베이스를 사용하려면 Bootstrap.properties1파일을 데이터베이스에 대한 연결을 확보할 수 있게 H2와 관련된 특성 설정을 지정하도록 설정해야 합니다.

그림 1. Bootstrap.properties
curam.db.type=h2
curam.db.name=curamdb
curam.db.username=curam
curam.db.password=qqnscP4c4+s=
# H2 directory.
# Default is home directory
# (i.e. C:/Documents and Settings/<username>). (Optional)
curam.db.h2.directory=C:/H2
# Mode remote|embedded
curam.db.h2.mode=embedded
# For remote mode also specify:
curam.db.serverport=9092
curam.db.servername=localhost
# Lock Time Out in ms. Default is 1000, i.e. 1 second. (Optional)
curam.db.h2.locktimeout=20000
# Property to disable MVCC. Default: true. (Optional)
curam.db.h2.mvcc=true

Bootstrap.properties를 업데이트하 서버 및 데이터베이스를 재빌드하고 나면 Oracle 또는 DB2에 대해서와 똑같은 방법으로 개발할 수 있습니다.

H2 모드

애플리케이션 개발을 위해 지원되는 H2 모드는 다음과 같습니다.

Bootstrap.properties 파일에서 다음 특성을 사용하여 필수 모드를 지정할 수 있습니다.

# Mode remote|embedded
curam.db.h2.mode=embedded

MVCC(Multi-Version Concurrency Control)

MVCC 기능을 사용하면 배타적 테이블 레벨 또는 행 레벨 잠금을 사용하는 것보다 높은 동시성을 누릴 수 있습니다. 이 데이터베이스에서 MVCC를 사용할 경우 삭제, 삽입 및 업데이트 조작은 테이블의 공유 잠금만 실행할 수 있습니다. 열 추가 또는 제거, 테이블 삭제 및 SELECT... FOR UPDATE 사용 시에는 배타적 잠금이 계속 사용됩니다. 연결은 커미트된 데이터 및 자체 변경사항만 '봅니다'. 즉, 연결 A가 행을 업데이트하되 변경사항을 커미트하지는 않은 경우 연결 B는 이전 값을 보게 됩니다. 연결 A의 변경사항이 커미트된 경우에만 새 값이 다른 연결에 표시됩니다(읽기 커미트). 다중 연결이 동시에 같은 행을 업데이트하려고 하면 데이터베이스가 이 변경사항을 적용할 수 있을 때까지(대개는 잠금 제한시간이 만료될 때까지) 대기합니다.

기본적으로 MVCC는 true로 설정됩니다.

Bootstrap.properties 파일에서 다음 특성을 사용하여 MVCC를 끌 수 있습니다.

# Property to disable MVCC. Default: true. (선택사항)
curam.db.h2.mvcc=false

H2 웹 콘솔

h2.jar에서 org.h2.tools.Server 클래스를 실행하여 H2를 시작할 경우 해당 웹 콘솔이 시작되며 URL에서 액세스할 수 있습니다.

http://localhost:8082/

로그인 화면에서 지정하는 JDBC 연결 URL은 Bootstrap.properties의 curam.db.name, curam.db.username 및 curam.db.h2.directory 값을 기반으로 하며, 이는 각각 데이터베이스 이름 SCHEMA 이름, 파일 시스템에서의 데이터베이스 위치를 정의합니다. 따라서 데이터베이스 이름이 curamdb이고 사용자 이름이 curam이 되고 curam.db.h2.directory가 사용자의 홈 디렉토리로 기본 설정되면 JDBC 문자열은 다음과 같은 모양이 됩니다.

jdbc:h2:tcp://localhost/~/curamdb;schema=curam;FILE_LOCK=SOCKET

예를 들어 curam.db.h2.directory가 C:/H2이면 JDBC 문자열은 다음과 같은 모양이 됩니다.

jdbc:h2:tcp://localhost/file:C:/H2/curamdb;schema=curam;FILE_LOCK=SOCKET

Bootstrap.properties에서와 같이 사용자 이름비밀번호에 대해 값을 지정한 후 연결(또는 테스트 연결) 단추를 클릭하십시오. 일단 연결되고 나면 SQL 텍스트 제어 등을 사용할 수 있습니다.

1 Bootstrap.properties에 대한 자세한 정보는 Cúram Server Developer's Guide를 참조하십시오.