썬의 Java DB 사용법

2008. 5. 10. 19:39DB&NoSQL

download Java DB


Java DB는 완전히 자바로 만들어진 라이트웨이트 DBMS이다. 2MB의 메모리만 필요해서, 여러분의 애플리케이션에 직접적으로 데이터베이스의 기능을 충분히 할 수 있게 임베디드 하기 쉽게 되어 있다.

JavaDB는 또한 표준을 따르고, SQL과 JDBC API를 지원하며 J2EE와 쉽게 통합이 된다. Java 6버전의 릴리스를 시작으로, 썬은 JDK에 Java DB를 패키지 하기 시작했다.

DBMS 이후의 기술
아파치 더비(Apache Derby)는 Java DB의 핵심기술이다. 더비(Derby)의 데이터 베이스 엔진은 충분한 기능을 하는 관계형 임베디드 데이터 베이스 엔진이다. JDBC와 SQL은 API 프로그래밍의 주력이다.

Java DB를 구성하는 또 다른 핵심 구성요소는 더비 네트워크 서버이다. 네트워크 서버는 전통적인 클라이언트 서버 기능을 제공하는 더비 데이터 베이스 엔진의 범위를 확장한다. 네트워크 서버는 클라이언트가 표준 DRDA 프로토콜을 사용하는 TCP/IP 연결을 허용한다. 또 더비 엔진이 네트워크가 형성된 JDBC, ODBC/ CLI, Perl, 그리고 PHP 지원을 허용한다.

더비는 ij, dblook, 그리고 sysinfo의 3가지 유용한 유틸리티를 가지고 있다.

● Ij는 어떤 JDBC 데이터베이스와 연동하여 실행하는 SQL 스크립트를 허용하는 툴이다.
● dblook는 더비 데이터베이스를 위한 스키마 추출 툴이다.
● sysinfo는 버전 넘버와 클래스 패스를 표시하도록 허용하는 유틸리티이다.

멀티쓰레딩(Multithreading) 고민
애플리케이션이 임베디드된 더비 JDBC 드라이버를 사용한 더비 데이터베이스를 액세스 할 때, 더비 엔진은 별개의 프로세스에서 작동되지 않고 시작과 종료시 별개의 데이터베이스 프로세스가 없다.

대신에 더비 데이터 베이스는 애플리케이션처럼 같은 자바 가상 머신(JVM) 내에서 작동한다. 더비는 실제로 애플리케이션에서 사용하는 다른 jar파일처럼 애플리케이션의 한 부분이 된다.

더비는 주어진 데이터베이스에 다중 접속들을 지원한다. 임베디드 된 애플리케이션의 보기는 동시 사용자를 관리하는 임베디드 된 더비의 톰캣이나 제로니모 애플리케이션 서버이다. 어떠한 유저수도 웹서버를 통해 데이터베이스를 액세스 하는 웹 애플리케이션을 실행할 수 있다.

오직 하나의 JVM이 데이터베이스를 부팅할 수 있어서 다른 JVM에서 돌고 있는 여러 애플리케이션은 같은 데이터베이스를 액세스 할 수 없다.

JAVA DB 사용
DBMS 사용을 시작하기 위해서는 SDN(Sun Development Network)에서 Java DB를 다운 받아야 한다. 바이너리 파일은 임베디드 데이터베이스 애플리케이션을 하기 위해 필요한 모든 것을 제공한다.

파일을 다운로드 하고 나면 demo, frameworks, javadoc, docs 그리고 lib라는 서브디렉토리로 구성된 Java DB 디렉토리를 볼 수 있다.

● demo 2개의 데모 프로그램이 있다. 하나는 어떻게 임베디드 애플리케이션을 만드는지에 대한 견본이고, 다른 하나는 클라이언트-서버 환경에서 Java DB를 어떻게 사용하는지를 보여 주는 데모이다.
● frameworks 환경 변수, 데이터베이스 생성 및 작업의 셋팅을 위한 유틸리티를 가지고 있다(본고에서는 독립적인 애플리케이션으로 설명하기 때문에 이 서브디렉토리를 사용하지 않는다).
● javadoc API관련 문서가 있다. 만약 Java DB API Javadoc에서 지적하는 것 처럼 여러분의 IDE를 구성하려면 유용하다.
● docs Java DB의 제품 셋업, 어드민 및 레퍼런스 가이드가 있다.
● lib JAR 파일 같은 패키지 된 Java DB라이브러리가 있다.
(다양한 라이브러리에 대한 자료는 Java DB 문서를 참조하기 바란다.)

이 기사에서는 임베디드 된 데이터베이스 애플리케이션을 위해 derby.jar 라이브러리 파일만 사용할 것이다. 개발을 위해 Java DB를 설치하기 위해서는 derby.jar 파일을 애플리케이션 클래스패스의 부분으로 만드는 것만 요구된다.

바이너리 파일을 설치하고 클래스패스에 derby.jar 파일이 있으면 다른 JDBC 컴플라이언트 데이터베이스를 사용하는 것처럼 Java DB를 사용할 수 있다(만약 Java 6가 이미 설치되어 있다면, derby.jar파일을 클래스패스에 포함시키면 된다).

드라이버 관리
JDBC 기술의 드라이버의 로딩으로 DBMS를 사용할 수 있다(Java DB의 드라이버는 derby.jar 파일과 함께 있기 때문에 다른 것을 다운로드 받을 필요가 없다). 드라이버를 로드하기 위해 Class.forName 메소드를 사용하는 것을 참조한다. 임베디드 된 드라이버 이름은 org.apache.derby.jdbc.EmbeddedDriver이며, 다른 JDBC 드라이버를 로드하는 것처럼 할 수 있다.

Class.forName("org.apache.derby.jdbc.EmbeddedDriver");

드라이버 매니저로부터 연결을 복구하려면 간단하게 데이터베이스를 정의하는 url 스트링을 제공하고 데이터베이스와 함께 상호 연결에 영향을 주는 프로퍼티(properties)의 세팅을 제공한다. 가장 일반적인 프로퍼티 사용은 연결시 유저명과 패스워드를 함께 하는 것이다.

url의 dbName 포션을 정의하는 것은 특정 데이터베이스이다. 데이터베이스는 현재 작업 디렉토리, JAR파일, 특정 Java DB 데이터베이스 홈 디렉토리, 파일 시스템상의 절대 위치 또는 클래스패스 상에서와 같이 많은 위치 중 한 곳에서 할 수 있다.

임베디드 된 환경에서의 데이터베이스 로케이션을 다루는 가장 쉬운 방법은 derby.system.home 시스템 프로퍼티에 세팅하는 것이다. 이 프로퍼티는 Java DB에 모든 데이터베이스의 디폴트 홈 위치를 말하는 것이다. propertyList의 옵션은 데이터베이스 시스템에 패스할 수 있는 프로퍼티 셋이다.

URL상의 Java DB 시스템에 프로퍼티를 패스하거나 별개의 프로퍼티 오브젝트로 패스할 수 있다. 만약 프로퍼티가 url의 일부이면, 세미콜론(;)은 각 프로퍼티의 소유권을 선행하여야만 한다. 아래에 가장 일반적인 프로퍼티가 있다.

create=true
databaseName=nameOfDatabase
user=userName
password=userPassword
shutdown=true


일단 어디에 모든 데이터 베이스가 존재할 것인지를 명시하면, 데이터베이스 연결을 복구한다. @

private void setDBSystemDir() {
    // Decide on the db system directory: <userhome>/.addressbook/
    String userHomeDir = System.getProperty("user.home", ".");
    String systemDir = userHomeDir + "/.addressbook";    

    // Set the db system directory.
    System.setProperty("derby.system.home", systemDir);
}    

Connection dbConnection = null;
String strUrl = "jdbc:derby:DefaultAddressBook;user=dbuser;password=dbuserpwd";
try {
    dbConnection = DriverManager.getConnection(strUrl);
} catch (SQLException sqle) {
    sqle.printStackTrace();
}



출처  : 썬의 Java DB 사용법 
        : Get your feet wet with Sun’s tiny Java DB

'DB&NoSQL' 카테고리의 다른 글

Top 10 free database tools for sys admins  (0) 2015.10.02