자바 프로그램내에서 Derby 사용하기

최근 개발하고 있는 프로그램 중은 단독으로 운영되는 자바 애플리케이션인데 프로그램내에서 많은 정보를 관리해야 하기 때문에 간단한 수준의 DBMS가 필요했는데 apache의 derby를 잠깐 테스트 해보았다. 3시간 동안 삽질한 결과이다. *^^*

오라클과 같은 일반 DBMS는 DBMS가 서버로 수행되고 클라이언트가 네트워크 접속을 통해 접속하여 사용하는 방식으로 수행된다. 하지만 derby의 경우 이런한 환경도 기본적으로 제공하지만(Network Server) 동일한 애플리케이션에서 동일한 JVM내에서 네트워크 접속을 사용하지 않고도 사용할 수 있는 기능을 제공한다.

derby를 다운로드 받아 압축을 해제한 후 다음과 같은 샘플 프로그램을 만든다.
public class DerbyTest
{
public static void main(String[] args)
{
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try
{
Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();
conn = DriverManager.getConnection("jdbc:derby:derbyDB;create=true");

stmt = conn.createStatement();

stmt.execute("CREATE TABLE emp (id integer primary key not null, name varchar(32))");
stmt.execute("INSERT INTO emp VALUES (1, '김형준')");
rs = stmt.executeQuery("SELECT * FROM emp");
while(rs.next())
{
System.out.println("성명:" + rs.getString(2));
}
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
try { rs.close(); } catch(Exception err) {}
try { stmt.close(); } catch(Exception err) {}
try { conn.close(); } catch(Exception err) {}

//DB shutdown
boolean shutDownError = false;
try
{
DriverManager.getConnection("jdbc:derby:;shutdown=true");
}
catch (SQLException se)
{
shutDownError = true;
}

if (!shutDownError) System.out.println("DB 종료 오류");
else System.out.println("DB 정상 종료");

}
}
}

수행시키기 위해서는 다음 세개의 파일을 클래스 패스로 잡는다.
derby.jar
derbyclient.jar
derbynet.jar

getConnection("jdbc:derby:derbyDB;create=true") 에서 derbyDB 라는 새로운 Database를 생성하라는 의미이다. 물론 기존에 존재하면 만들지 않는다. 이렇게 만들어진 database는 파일로 존재하는데 실행시키는 애플리케이션의 HOME에 만들어진다 필자의 경우 eclipse 의 workspace 상에서 수행했기 때문에 다음과 같은 폴더가 만들어 졌다.

c:eclipseworkspacederbytestderbyDB


그리고 DB 종료시 위와 같이 구성한 이유는 DriverManager.getConnection("jdbc:derby:;shutdown=true"); 이와 같은 구문으로 DB 종료시 정상적으로 종료되어도 SQLException이 발생한다. 종료되었다는 것 자체를 예외로 보기 때문인것 같다.
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 김형준


Trackback URL : http://www.jaso.co.kr/trackback/49

Leave a comment
« Previous : 1 : ... 313 : 314 : 315 : 316 : 317 : 318 : 319 : 320 : 321 : ... 345 : Next »