Search results for 'Dev/apache-derby'

derby의 유용한 기능

2008/12/15 13:58
크리에이티브 커먼즈 라이선스
Creative Commons License
이전 포스트에서 derby를 이용해 간단한 화면을 작성해 보았다. 사실 조금 더 손보면 그럭저럭 쓸만한 게시판 하나는 작성할 수 있다. 이제 좀 더 derby의 유용한 기능등을 살펴보자.

서버 실행 옵션
우리가 지금까지 실행해본 서버는 단순히 startNetworkServer.bat를 이용했다. 그리고 derby에서 사용하는 기본 포트는 1527이다. 만약 포트를 바꾸고자 한다면 ? 2가지 방법이있다.

첫째는 실행시 파라미터를 추가해 바꾸는 방법.
둘째는 프로퍼티를 작성하는 방법.

프로퍼티 부분은 차후 자세히 설명하도록 하고 먼저 파라미터를 이용해 포트를 여는 방법은 다음과 같다.

 startNetworkServer -p [포트]
 예 > startNetworkServer -p 8888
       

그리고 network 타입의 접근에 받아드릴 호스트를 지정하는 옵션이 있다. 위와 같이 실행시 파라미터, 혹은 프로퍼티 작성이 있을 수 있는데 실행시 파라미터는 다음과 같다.

 startNetworkServer -h [호스트]
 예 > startNetworkServer -h localhost

위와같을 경우 127.0.0.1로 되어있으므로 클라이언트 접근시 127.0.0.1 혹은 localhost로는 접근이 가능 하다. 단, 실제 사용중인 ip로 접근할 경우 접근이 불가능 하다. 이것은 원격지가 아니라 자기 자신의 PC라고 해도 불가능한 것이다.

DB연결에 대한 기타 옵션
jdbc:derby://localhost:1527/c://derby_db//db_data//pupustoryDB;create=true;


jdbc:derby://[접속IP]:[포트]/[데이타 생성경로(생략가능)]/[DB 이름];create=true;
[접속IP] : network 타입일 경우 접속할 IP를 기입
[포트]    : network 타입에 설정된 포트를 기입

예>
localhost의 1527포트 접근 한다. 1527은 derby_db의 기본 포트임

[데이타 생성경로(생략가능)] : db파일 생성 경로 변경
예>
c://derby_db//db_data/ 하위에 db파일 경로로 지정

[DB 이름] : 생성(혹은 접근) DB이름
예>
pupustoryDB로 DB 생성

앞에서 서술한 경로의 DB에 접근한다.
만약 해당 경로에 접근할 DB가 없다면, 새로 생성하고 존재할 경우 접속만 한다.

날짜 관련 함수 이용 방법
===========================================================================

여기에서 사용된 SYSIBM.SYSDUMMY1 테이블은 oracle의 dual과 같은 '가상의 테이블'로 보면 될 것이다.

사실 검색해본 결과 본 쿼리는 IBM DB2에서 사용되는 쿼리이다. 아마도 derby는 IBM의 영향을 받았으므로 DB2방식(?)을 따라가는게 아닌가 싶다.

그렇다고 DB2에 사용되는 모든 쿼리가 이용되는 것은 아니지만 스타일이 비슷하다.(SYSIBM.SYSDUMMY1 역시 DB2에서 가져온 듯 하다.)

필자가 실행을 확인한 함수는 다음과 같다.
필자가 확인한 함수는 여기 까지다. 이 외에도 DB2방식의 함수를 이용할 수 있는게 몇건 있을꺼라 보인다.
----------------------------------------------------------------------------------------------
IJ TOOL에서 사용되는 유용한 명령어

ij의 명령어는 'help;'를 통해 살펴볼 수 있다. 그중 자주 사용되는것 몇가지만 살펴보자.
AUTOCOMMIT [ ON | OFF ];    
자동 커밋여부를 지정한다. 기본적으론 ON으로 되어있다.
트렌젝션 처리등을 위해 이왕이면 OFF로 사용하는것이 좋을듯 하다.

DISCONNECT [ CURRENT | connectionName | ALL ];
현재 연결 혹은 지정된 이름의 연결을 해제 한다.
 
 SHOW SCHEMAS;               
 현재 데이터베이스에 있는 모든 스키마를 확인한다.
 
 DESCRIBE name;
 지정된 이름의 테이블 정보를 확인한다.

 COMMIT;                     
 ROLLBACK;                 
 별도의 설명이 필요 없다.
 물론 상단의 옵션에 AUTOCOMMIT가 OFF로 되어있어야 가능 하다.
 
 EXIT;                       
 ij를 종료한다.
 
 기능은 확인하지 못했지만 다른 쓰레드에 실행하는 구문이라는 것도 있다. 아마도 배치작업을 돌린다는 것 같은데 . .사용해보지 않았으므로 여기선 생략 하겠다. 그리고 실제로 help에 보면 '프로시저'에 대해 언급하는데 .. 이게 참 신기하다. 이렇게 작은 녀석이 .. 트렌젝션까지 ..
 
프로퍼티를 통한 서버 설정

위의 파라미터를 통해 값을 설정하는 것 외에 프로퍼티 파일을 이용할 수 있다. 파일 이름은 반드시 derby.properties로 해야하며 경로는 ./bin에 위치하면 된다.

derby.properties


만약 인증을 사용하고 계정을 이용할 경우 다음과 같이 url을 이용해야 한다.
jdbc:derby://localhost:1527/pupustoryDB;user=pupustory;password=0000

그 외 더욱 다양한 프로퍼티 설정은 여기(아파치문서) 를 참조한다.
(위 페이지에 보면 derby가 얼마나 많은 기능을 보유하고 있는지 알 수 있다.)
저작자 표시 비영리 변경 금지

'Dev > apache-derby' 카테고리의 다른 글

derby의 유용한 기능  (0) 2008/12/15
derby를 이용한 초간단 화면 만들기  (0) 2008/12/12
apache-derby Network DB 'hello world !'  (0) 2008/12/12
Apache-Derby ?  (0) 2008/12/11

Pupustory Dev/apache-derby

derby를 이용한 초간단 화면 만들기

2008/12/12 15:52
크리에이티브 커먼즈 라이선스
Creative Commons License
간단한 웹 페이지 하나를 만들고 거기에 derby를 이용한 작은 댓글화면을 만들어보자.

사실 제대로 된 웹 페이지로 하려면 시간도 꽤 걸리고 무엇보다 코드가 길어져 포스트로 작성할 수준이 아니라 작성자나 보는사람 모두 피곤하다.

따라서 DAO와 jsp에 '코드 저따위로 짜면 안된다!!'는 말은 하지말자..

먼저 할 일은 서버를 구동시키는 것 이다. 이전 포스트에서 수행했던데로 서버를 구동시키자.


구동된 서버는 내버려 두고 새로운 터미널을 열고 ij를 실행 시키고, 테이블을 생성하자.
(query :  CREATE TABLE TB_PUPUSTORY_BRD (USR_ID VARCHAR(10),TITLE VARCHAR(50), TEXT VARCHAR(500));)


이제 db에 접근해서 값을 넣고, 빼오는 코드를 작성하자.
DAO

bean

DAO부분이다 bean부분은 별도의 설명이 필요 없을듯 하다. 이미 이전 포스트에서 derby접근방법에 대한 설명이 있었으므로 생략한다.

이제 화면을 만들어 보자.

화면 단 하나에서 모든걸 처리한다. 아주아주 단순한 화면이다. 이 화면에 대한 실행 결과는 다음과 같다.


derby에 등록된 글을 확인해 보자.

본 문서에서 사용된 소스 파일

만약 한글이 깨져서 저장 된다면 ?!

더보기


저작자 표시 비영리 변경 금지

'Dev > apache-derby' 카테고리의 다른 글

derby의 유용한 기능  (0) 2008/12/15
derby를 이용한 초간단 화면 만들기  (0) 2008/12/12
apache-derby Network DB 'hello world !'  (0) 2008/12/12
Apache-Derby ?  (0) 2008/12/11

Pupustory Dev/apache-derby

apache-derby Network DB 'hello world !'

2008/12/12 10:39
크리에이티브 커먼즈 라이선스
Creative Commons License
이번엔 java로 간단한 프로그램을 작성해서 derby에 접근해 보자.

이 글을 검색을 통해 온 사람이면 이정도 코드는 이해하고 있을꺼라 생각하고 코드부터 살펴보자.



이미 주석으로 많은 부분을 설명했으므로 추가적인 설명은 안해도 될 듯 하다.

자주 사용하는 DBMS처럼 Class.forName()를 통해 드라이버를 찾고(드라이버의 초기화) url로 커넥션을 얻어온다.
(주석처리 된 부분은 임베디드 DB접근시 사용하는 드라이버)

지금 사용하는 것은 네트워크 DB이므로 위와 같은 URL을 사용한다.

Statment를 받아오고 로우 하나를 추가한다.

오토커밋을 false로 수정하고 로우가 추가 되었을 경우(변경건이 0개 이상) 커밋을 수행한다.

그후 추가된 로우를 확인하는 쿼리를 날리고 ResultSet를 받아온다.

결과는 다음과 같다.



ij tool을 이용해 조회해 보자.



저작자 표시 비영리 변경 금지

'Dev > apache-derby' 카테고리의 다른 글

derby의 유용한 기능  (0) 2008/12/15
derby를 이용한 초간단 화면 만들기  (0) 2008/12/12
apache-derby Network DB 'hello world !'  (0) 2008/12/12
Apache-Derby ?  (0) 2008/12/11

Pupustory Dev/apache-derby

Apache-Derby ?

2008/12/11 17:14
크리에이티브 커먼즈 라이선스
Creative Commons License
회사 입사하고 .. 멈춰있기 싫어서 간단한거라도 만들어 보고 싶었다. db도 좀 들어가야될 듯 하고 .. 뭐 이래저래 간단한 CRUD를 만들려고 하는데 .. 이클립스나 프로젝트는 USB등에 넣으면 된다지만 문제는 DB였다.

회사에도 설치하고 집에도 설치하고 .. ERWIN으로 스키마 작성하고 싱크를 맞춰줌 된다지만.. 그래도 불편한건 사실이다. .. 그러던중 찾아본게 JAVADB라는건데 .. API찾기가 apache-derby가 더 많아서 .. 여기에 관심이 생겼다.

결론부터 말하자면 공부 안했다 --; 귀찮기도 하고 집에오면 퍼저있느라 .. 그러던 중 쉬운문서 하나 발견해서 .. 이걸로 간단한 CRUD나 만들어 볼까 한다 ..

What is apache-derby ?

Apache Derby 프로젝트는 완전히 자바 프로그래밍 언어로 작성된 오픈 소스 데이터베이스를 구현하는 프로젝트이다. 데이터베이스를 개발하는 일은 간단한 일이 아니고 Apache Derby 데이터베이스도 예외는 아니다. 하지만 Derby 프로젝트는 기초부터 시작하지 않았다. 1996년 Cloudscape, Inc.가 자바 언어로 작성된 데이터베이스 서버를 구현할 목표를 가지고 설립되었다. 이 회사는 그 다음 해에 첫 번째 릴리스를 내놓았고 결국 제품의 이름도 Cloudscape로 바뀌었다. 1999년에 Cloudscape, Inc.는 대형 데이터베이스 벤더인 Informix Software, Inc.에 인수되었다. Informix Software는 2001년 IBM이 인수했고, IBM Cloudscape™ 데이터베이스 시스템은 많은 IBM 제품들에서 임베디드 데이터베이스 엔진으로 사용되었다. 2004년 4월, IBM은 Cloudscape 데이터베이스 소프트웨어를 Apache Software Foundation에 기부했고 Apache Derby 프로젝트가 생겨났다
(출처 : Apache Derby로 개발하기 -- Trifecta: Apache Derby 소개 (한글))
(url : http://www.ibm.com/developerworks/kr/library/os-ad-trifecta1/)


한줄로 요약하자면 'JVM위에 올라가는 경량의 DB'라는 얘기다. 그렇다면 'mysql은 공짜이면서 강력하다. MSSQL Express도 공짜다. ORACLE 10XE도 공짜다 왜 써야하지?'라고 묻는다면 크게 할말은 없지만... 이것은 '경량'이라는 점과 'JVM위에 올라가는 DB'라는 점에 집중해야 한다.
'경량'이며 'JVM'에 올라간다면 한가지 특징이 생겨난다. 바로 '배포'이다. 임베디드 DB로 사용해도 손색이 없다는 얘기다. 무엇보다 Java기반이므로 Java개발자는 더욱 쉽게 접근할 수 있다.
* 찾아보니 SQLITE 역시 배포에 적합하며 속도도 우수하다. 추후 이것도 건드려 볼 생각이다.

자. 설명이 끝났으면 이제 직접 설치해 보자. 아파치 더비 페이지(http://db.apache.org/derby/)에서 최신 버젼을 골라 다운받자.
(이 글이 작성되는 시점에선 Apache Derby 10.4.2.0 Release가 가장 최신 버전이다.)





다운받은 파일의 압축을 해제하자.

먼저 우리는 두가지중 하나를 선택할 수 있다.

우리가 지금까지 사용해온 오라클, MSSQL등 처럼 네트워크 접속을 통한 DB인가?

어플리케이션에 포함되어 배포되 사용하는 임베디드 DB인가 ?

두 버젼의 차이점은 다음과 같다.

네트워크 DB
1. 타 DBMS와 마찬가지로 지정된 포트로 접근한다. 물론 계정, 비밀번호 등을 통해 접근하며 기본적인 CRUD를 수행 한다.
2. 사용을 위해선 서버를 기동시켜야 한다.

임베디드 DB
1. 어플리케이션 배포에 포함되 프로그램이 JVM에 올라갈때 같이 올라간다.
2. 따라서 '어플리케이션 사용시에만 기동'된다.

(먼저 살펴볼것은 네트워크 DB를 이용해 보자. 왜냐면 필자가 차후 이것을 이용해 작은 웹 게시판을 만들 예정이기 때문이다. --b)

네트워크 DB를 이용하기 위해선 DB를 기동시켜야 한다. 자. 우리가 잊지 말아야 할 것이 있다. 그것은 'apache-derby는 JVM에 올라가서 구동된다.'는 것이다.

해서 서버 구동도 java app로 되어있다. 일반적으로 java app의 사용을 위해선 'java pupustory.app.start.Start_App' 로 수행해야 한다.

다른 java lib와 마찬가지로 path를 잡아줘야 한다. 간단히 사용하기 위해 다음의 파일을 만들자.

init.bat


이제 서버를 기동해 보자. 친절하게도 .sh와 .bat를 제공해주고 있다. 경로는 '/bin'의 startNetworkServer.bat파일이다.



서버가 기동되었다. 이제 접근해 간단한 테이블을 만들고 데이터를 넣고, 조회해보자. 접근을 위한 툴로 'ij'가 제공된다.

서버기동과 마찬가지로 '/bin'의 ij.bat 파일이다. 실행 후 다음과 같이 입력해 db에 접근해 보자.
(접속 :  connect 'jdbc:derby://localhost:1527/pupustoryDB;'; )


아예 테이블까지 하나 만들어 버렸다. 접근 url은 우리가 많이 보던 형식이다.
(디스크 공간부족은 무시하자 --;)

이제 값을 넣고 삭제해 보자.

일반 dbms를 사용하듯 쿼리를 작성해 주면 로우가 추가된다. 삭제도 마찬가지다.

이번 포스트는 이것으로 마치고, 다음 포스트에서 이젠 java app로 접근하는 방법을 알아보자.

저작자 표시 비영리 변경 금지

'Dev > apache-derby' 카테고리의 다른 글

derby의 유용한 기능  (0) 2008/12/15
derby를 이용한 초간단 화면 만들기  (0) 2008/12/12
apache-derby Network DB 'hello world !'  (0) 2008/12/12
Apache-Derby ?  (0) 2008/12/11

Pupustory Dev/apache-derby