2013년 6월 5일 수요일

eGovFramework + Hibernate + CUBRID

전자정부Framework(eGovFrame, http://www.egovframe.org)은 J2EE에서 가장 널리 사용되는 Spring Framework를 기반으로 여러 공개SW를 활용하여 웹 프로젝트에서 공통으로 사용되는 많은 기능들을 제공한다.

eGovFrame 홈페이지에도 설치 및 구동에 대한 지침이 잘 정리되어 있으나, DB로는 MySql, Persistence Layer로는 iBatis(현재는 MyBatis) 기반으로 작성이 되어 있어, MySql이나 iBatis가 아닌 다른 요소들을 적용하려면 미세하나마 조정이 필요하다.

본 문서에서는

  • 2013.06.04 현재 최신 eGovFrame 개발환경인 V2.5를 설치하고,
  • CUBRID 9.1과 Hibernate 4.2를 설치하고
  • eGovFrame 홈페이지에서 제공하는 ormSimpleGuide를 실행하여, eGovFrame + Hibernate + CUBRID 개발환경 설정 성공을 확인해 보는 것 까지를 범위로 한다.



사전 알림 사항

  • 아래의 내용은 Windows 7 - 64bit에서 구성
  • JDK는 32bit용을 설치한다.(32bit JDK에서만 eGovFrame의 Eclipse가 실행됨)
  • 개발환경 구성의 최상위 디렉토리는 '개발홈'으로 칭하며 'D:\eGov-Dev'로 한다.




eGovFrame 개발 환경 다운로드

http://www.egovframe.org/EgovDevEnvRelease.jsp?menu=3&submenu=2 에서 다음의 링크를 클릭하여 개발홈에 다운로드 받는다.


eGovFrame 개발환경은 압축을 푸는 것으로 설치는 끝난다.




eclipse를 실행하여 Workspace를 아래와 같이 지정한다. workspace폴더에 각종 설정파일들이 있으므로 반드시 아래의 디렉토리를 지정해야 한다.



만약 위 화면이 나오지 않고 eclipse가 실행이 되지 않으면, eclipse.ini 에서 아래 내용을 추가하여 JVM의 위치를 지정해준다.(eclipse.ini 파일에 익숙하지 않다면 그냥 맨위 라인에 추가하면 된다)

ex)
-vm
C:/Program Files (x86)/Java/jre7/bin/javaw.exe


아래 그림의 우상단에 eGovFrame Perspective가 활성화되어 있다면 eGovFrame용 eclipse는 정상적으로 설치되었다. 정상 설치되었으면 eclipse는 종료한다.
만약, 그렇지 않다면, JVM이나 workspace의 위치 지정이 잘못된 것이니 위의 내용대로 다시 수행해본다.


CUBRID 설치


CUBRID는 국내에서 개발된 공개SW DBMS로 공식 홈페이지는 영문으로된 http://www.cubrid.org 이며, http://www.cubrid.com 를 통해 한글로도 볼 수 있다.
CUBRID의 엔진은 GPLv2 or Higher로 되어 있고, CUBRID의 인터페이스는 BSD로 되어 있다.
즉, BSD 라이선스를 적용받는 CUBRID JDBC driver를 통해 CUBRID DB엔진을 사용하는 어떤 서비스를 만들더라도 우리가 만든 그 서비스의 소스는 공개할 필요가 없다.
자세한 내용은 http://www.cubrid.com/zbxe/bbs_oss_guide/32249 를 참조한다.


CUBRID는 홈페이지를 통해 개발홈에 다운로드 받는다. http://www.cubrid.org/




CUBRID 설치 폴더를 개발홈 아래에 'CUBRID-9.1'로 미리 만든다.



실행파일을 더블클릭하여 설치를 시작하면 9.1에 대한 아래의 안내가 나온다. 다음 클릭.



설치 위치를 위에서 미리 만든 폴더로 지정하고 다음 클릭




아래와 같은 안내가 뜨는데, '예'를  눌러 계속 진행한다.



아래와 같은 라이선스에 동의하고 다음 클릭



설치 옵션에서 전체 설치 선택 후 다음 클릭



브로커 버전과 데이타베이스 버전의 호환성 정보 확인에 '예'를 클릭



설치 최종 확인 창에서 다음 클릭



설치 진행 중 샘플 DB 생성을 묻는 창에서 '예' 클릭



아래와 같이 demodb 생성이 진행



아래와 같이 CUBRID 설치 완료



완료를 누르면 개발자 페이지가 열리고 아래와 같이 작업관리줄에 CUBRID 로고인 바람개비 아이콘이 활성화된다.




CUBRID Manager 설치



CUBRID를 관리할 GUI 방식의 Manager를 설치한다. CUBRID Manager는 64bit의 JDK가 반드시 필요하다.

http://www.cubrid.com/zbxe/download 에서 아래의 링크를 통해 개발홈 폴더에 다운로드 한다.


더블 클릭하여 설치를 시작한다.
설치 언어로 '한국어'를 선택하고,
다음을 클릭하여 설치를 시작,
사용권 계약에 동의하고,
바로가기는 개인 편의에 맞게 선택한다.

설치위치는 default 값이 아래와 같은 지 확인하고 '설치' 버튼을 누른다.



아래와 같이 설치가 완료되면 다음을 클릭하고 마침을 클릭하여 설치를 종료한다.




바로가기나 실행파일을 통해 CUBRID Manager를 실행한다.

혹시 아래와 같은 에러가 발생한다면 cubridmanager.ini 파일에서 JVM의 위치를 64bit JVM으로 지정해준다.





CUBRID Manager가 성공적으로 실행되면 일반적인 eclipse처럼 Workspace를 묻는데 Default 값이 아래와 같은지 확인하고, '확인' 클릭



성공적으로 실행되고 아래와 같이 Update 요청 화면이 뜨면, '완료'를 클릭하여 업데이트를 실시한다.



업데이트 중 아래와 같은 인증서 확인 창이 뜨면 체크하고 확인 클릭



업데이트 후 재시작을 묻는 창에 '예'를 클릭하고 재시작한다.




CUBRID demodb 데이타베이스 시작



Hibernate 실습 예제에서 사용할 demodb를 시작한다.
demodb는 CUBRID 설치과정에서 생성한 default 데이타베이스이다.

CUBRID Manager에서 아래와 같이 localhost를 우클릭하여 '연결'을 선택한다.



CUBRID 호스트 창에서 아래와 같이 비밀번호 란에 admin 을 입력하고, 비밀번호 저장 란에 체크하여 '연결'을 클릭한다.



admin계정의 비밀번호는 아래와 같은 조건이 있으므로, 적절한 비밀번호를 입력한다.



재로그인 창이 뜨면 '예'를 클릭하여 CUBRID Manager에 재로그인한다. CUBRID Manager가 재시작되지는 않고 localhost에 로그인만 다시 진행된다.



localhost에 재로그인 후 아래와 같이 CUBRID Manager의 demodb을 우클릭하여 '데이터베이스 시작'을 클릭한다.



아래와 같이 demodb가 시작되고 아이콘에 녹색 화살표가 생긴다.




Hibernate 실습 예제 프로젝트 생성



eGovFrame에서는 Hibernate 실습 예제를 제공한다.
실습 예제는 Hibernate를 통해 DBMS에 테이블을 생성하고 삭제하는 것을 JUnit으로 테스트 한다.


eGovFrame의 ORM 관련 문서인
http://www.egovframe.org/wiki/doku.php?id=egovframework:rte2:psl:orm 의 최하단의 링크를 통해 개발홈에 다운로드 받고 압축을 푼다.






이클립스를 구동하고 Package Explorer에서 우클릭하여 Import... 클릭



Existing Projects into Workspace를 선택하고 Next 클릭



Browse..를 클릭하여 ormsimpleguide 폴더 선택



Copy projects into workspace를 선택하고 Finish 클릭한다.
Copy하였으므로 앞으로 본 문서에서 나타나는 ormSimpleGuide 프로젝트의 물리적 위치는 개발홈/ormSimpleGuide 가 아니라
개발홈/eGovFrameDev-2.5.1-FullVer/workspace/ormSimpleGuide 임에 유의한다.
혼선을 피하려면 다운로드 및 Import 를 위해 사용한 개발홈/ormSimpleGuide 폴더는 지워도 무방하다.



아래와 같이 ormSimpleGuide 프로젝트가 생성된다.




Hibernate 다운로드


ormSimpleGuide 프로젝트의 lib 폴더에 hibernate 라이브러리가 포함되어 있으나, CUBRID와 호환되지 않는 버전이 포함되어 있어 최신 버전의 Hibernate를 다운로드 해야 한다.

http://www.hibernate.org/downloads에서 아래 그림처럼 4.2.2.Final ZIP을 개발홈에 다운로드 받고, 압축을 푼다.





ormSimpleGuide 프로젝트에 Hibernate 4.2.2 적용



위에서 잠시 언급했지만 ormSimpleGuide에 포함된 버전의 Hibernate 라이브러리는 우리가 사용할 DBMS인 CUBRID를 지원하지 않는다.

Hibernate가 CUBRID를 지원하는 지 확인하는 방법은 'Hibernate-core-#.#.#.jar'의 압축을 풀어 'org/hibernate/dialect/CUBRIDDialect.java' 파일이 있는 지 확인하면 된다.

위에서 다운받은 4.2.2는 CUBRIDDialect.java 파일을 포함하고 있어 CUBRID를 지원하므로, ormSimpleGuide의 구버전 Hibernate 라이브러리를 제거하고 4.2.2를 적용한다.

개발홈/hibernate-release-4.2.2.Final/lib/required 에서 아래와 같이
hibernate-core-4.2.2.Final.jar,
hibernate-commons-annotations-4.0.2.Final.jar,
hibernate-jpa-2.0-api-1.0.1.Final.jar,
jboss-logging-3.1.0.GA.jar,
jboss-transaction-api_1.1_spec-1.0.1.Final.jar
5개의 파일를 ormSimpleGuide 소스가 있는 개발홈/eGovFrameDev-2.5.1-FullVer/workspace/ormSimpleGuide/lib에 복사한다.




개발홈/hibernate-release-4.2.2.Final/lib/jpa 에서 hibernate-entitymanager-4.2.2.Final.jar 를 개발홈/eGovFrameDev-2.5.1-FullVer/workspace/ormSimpleGuide/lib 에 복사한다.



바뀐 리소스를 eclipse에 반영하기 위해 아래와 같이 프로젝트를 refresh한다.




eclipse의 ormSimpleGuide를 우클릭하고 아래와 같이 Configure Build Path...를 클릭한다.



Libraries탭을 선택하여 아래와 같이 구버전의 Hibernate 라이브러리를 선택하고 Remove를 클릭하여 삭제한다.



Add JARs... 를 클릭하여 Hibernate 최신 버전에서 복사한 6개의 라이브러리를 아래와 같이 추가한다.




아래와 같이 Hibernate 라이브러리 교체 내역을 확인하고 OK를 누른다.




ormSimpleGuide 프로젝트에 CUBRID 적용


ormSimpleGuide는 Default로 HSQL DB를 사용하도록 설정되어 있어, CUBRID를 사용하도록 설정을 변경해야 한다.

DB연결 부분의 설정파일은 'ormsimpleguide/resources/META-INF'에 있는 persistence.xml 이다. 



Package Explorer 상에서 더블 클릭하여 편집기를 열고 아래와 같이 HSQL 정보를 주석처리하고 CUBRID 정보를 추가한다.

CUBRID 정보는 아래와 같으며, 자세한 내용은
아래 hibernate.connection.url의 value값 중 'dba::' 는 dba 계정의 비밀번호가 없음을 의미한다. CUBRID 설치 시 생성한 demodb에는 dba 계정이 비밀번호 없이 자동으로 생성된다. 추후 비밀번호를 생성하면 'dba:비밀번호:'로 수정하면 된다.

<!-- CUBRID -->
<property name="hibernate.connection.driver_class" value="cubrid.jdbc.driver.CUBRIDDriver"/>
<property name="hibernate.connection.url" value="jdbc:CUBRID:localhost:33000:demodb:dba::?charSet=utf-8"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.CUBRIDDialect"/>



http://www.cubrid.com/zbxe/developer에서 JDBC 드라이버를 다운받아 개발홈/eGovFrameDev-2.5.1-FullVer/workspace/ormSimpleGuide/lib에 저장한다.




리소스 변경을 반영하기 위해 ormSimpleGuide를 refresh하고,
다운받은 JDBC 드라이버를 eclipse에서 ormSimpleGuide의 라이브러리로 등록한다.