메인 컨텐츠로 가기

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관 보기.

developerWorks에 처음 로그인하면 developerWorks프로파일이 생성됩니다.귀하의 프로파일에서 동의하신 내용이 공개되지만 이 사항은 언제든지 변경 가능합니다. 귀하의 성명(숨김으로 체크되어 있어도 표시됩니다)과 디스플레이 이름은 게시한 컨텐츠나 사이트 엑세스시 표시됩니다.

모든 정보가 안전하게 전송되었습니다.

  • 닫기 [x]

처음 developerWorks에 로그인할 때 프로파일이 작성되므로, 이를 위해 디스플레이 이름을 선택해야 합니다. 선택하신 디스플레이 이름은 developerWorks에 게시한 컨텐츠에 표시됩니다.

3글자 이상 31글자 이하의 길이로 사용 가능합니다. dW커뮤니티 내에서는 보안상 이메일주소를 제외한 다른 이름을 지정하셔야 합니다.

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관 보기.

모든 정보가 안전하게 전송되었습니다.

  • 닫기 [x]

pureQuery를 사용하여 Hibernate와 iBATIS 애플리케이션 성능 개선하기, Part2 : IBM Integration Module for iBATIS and pureQuery 사용하기

새 통합 모듈을 사용하여 iBATIS 애플리케이션에서 정적 SQL과 이기종 일괄처리 기능 사용 가능하게 하기

Ambrish Bhargava, Staff Software Engineer, IBM
Ambrish Bhargava photo
Ambrish Bhargava is a Staff Software Engineer in the Open Source Team at IBM India Software Labs. He works on providing DB2 Static SQL support for iBATIS and Hibernate applications. Previously, he worked on the development of PHP extensions for IBM DB2 and Informix, and he originally developed the DB2-Django adapter. He graduated with an M.Tech in Information Technology from IIIT, Bangalore.
Mario Briggs, Senior Software Engineer, IBM
Mario  Briggs photo
Mario Briggs leads the Open Source offerings for IBM DB2 and IBM Informix including PHP, Ruby/Rails, Python/Django/SqlAlchemy, Perl, and Java data access frameworks. Mario has about 11 years of experience in Software development with many of those years spent in the area of data access, relational engines, and application-database performance.

요약:  IBM Optim™ pureQuery Runtime을 다운로드 가능한 IBM® Integration Module을 사용하여 확장하면 Hibernate와 iBATIS 애플리케이션용 DB2® 정적 SQL을 생성하는 프로세스가 단순화됩니다. 이 과정에서는 개발자가 애플리케이션 코드를 변경하거나 제품 워크로드에서 SQL을 수집할 필요가 없습니다. 또한, Optim pureQuery Runtime을 이용하면 Hibernate와 iBATIS 애플리케이션에서 DB2나 Informix®를 액세스하여 pureQuery의 이기종 일괄처리 기능의 이점을 활용할 수 있습니다. 개발자는 요청에서 다수의 테이블을 참조하는 경우에도 네트워크를 통해 요청을 전송하기 전에 이기종 일괄처리 기능을 사용하여 다수의 INSERT, UPDATEDELETE 요청을 처리할 수 있습니다. 이 기사는 두 개의 파트로 구성된 시리즈 기사의 두 번째 파트입니다. 이 기사에서는 IBM Integration Module을 iBATIS 애플리케이션과 함께 사용하는 방법을 설명합니다. 이 기사에는 다운로드 가능한 샘플 애플리케이션이 포함되어 있으며 iBATIS 애플리케이션에서 정적 SQL과 이기종 일괄처리 기능을 사용하기 쉽게 하는 방법을 이 애플리케이션을 통해 확인할 수 있습니다. 이 시리즈의 Part 1에서는 Hibernate 애플리케이션을 집중적으로 살펴보았습니다.

이 연재 자세히 보기

기사 게재일:  2010 년 9 월 16 일 번역 게재일:  2010 년 12 월 14 일
난이도: 중급 원문:  보기 PDF:  A4 and Letter (113KB | 18 pages)Get Adobe® Reader®
페이지뷰:  3666 회
의견:  


소개

IBM Integration Module for iBATIS and pureQuery를 이용하면 iBATIS 애플리케이션의 성능을 개선할 수 있을 뿐만 아니라 편리하게 애플리케이션을 관리할 수 있다. 이렇게 할 수 있으려면 DB2 정적 SQL과 pureQuery 이기종 일괄처리 기능을 사용해야 한다. 정적 SQL을 사용하면 DB2를 액세스하는 애플리케이션의 성능과 보안 기능을 개선할 수 있다. 이기종 일괄처리 기능을 이용하면 DB2와 Informix 데이터베이스 애플리케이션의 성능을 강화할 수 있다.

이 시리즈의 첫 번째 기사에서는 Hibernate 애플리케이션을 집중적으로 살펴보았다. 또한, 첫 번째 기사에서는 다음과 같은 두 가지 주제를 다루었다. 그러나 이 시리즈 기사의 두 번째 파트인 이 기사에서는 이러한 주제를 다시 다루지 않는다.

  • 성능 지표를 시각화하고 SQL문을 원본 Java 코드와 상관시키는 데 사용할 수 있는 모니터링 서비스 및 개발 도구, Java® API, 런타임으로 구성된 pureQuery 플랫폼 검토
  • SQL을 캡처하는 클라이언트 최적화와 같은 기능과 IBM Integration Module에서 제공하는 기타 다양한 기술을 이용하여 pureQuery API를 사용하지 않고도 pureQuery의 이점을 활용할 수 있는 방법

통합 모듈에 대한 검토

첫 번째 기사에서는 pureQuery API를 사용하지 않고 작성한 기존 애플리케이션에서 pureQuery를 활용할 수 있는 다음과 같은 두 가지 방법을 설명했다.

  • 애플리케이션이 실행되는 동안 클라이언트 최적화 캡처 기능을 사용한다.
  • 런타임 캡처 단계를 수행하지 않고도 프로그램이 pureQuery와 Optim Development Studio의 전체 기능을 활용하여 SQL을 시각화하거나 최적화할 수 있도록 통합 모듈을 사용한다. 이 방식을 사용하면 Hibernate나 iBATIS 프로그램이 실행되기 전에 IBM Integration Module에서 정적 SQL과 메타데이터가 추출된다. 이 방식은 새롭게 개발된 것으로 이 시리즈 기사에서는 이 방식을 집중적으로 살펴본다.

IBM Integration Module for iBATIS and pureQuery를 이용하면 iBATIS 애플리케이션에서 다음과 같은 이점을 활용할 수 있다.

  • 처음에 pureQuery 클라이언트 최적화 캡처 단계를 수행하지 않고도 iBATIS 애플리케이션에서 정적 SQL을 사용할 수 있다. IBM Integration Module은 캡처 단계를 사용하는 대신 iBATIS SQLMap 파일에서 정적 SQL을 추출한다. 이 SQL을 정적으로 바인드하여 DB2 데이터베이스에 액세스할 수 있으며 애플리케이션을 변경하지 않고도 이 SQL을 검토, 공유하거나 최적화하고 변경할 수 있다. 또한, 이 SQL을 애플리케이션 코드와 상관시킨 다음, iBATIS 소스 코드로 돌아가 성능 문제를 추적하거나 데이터베이스 오브젝트 변경 사항과 상관시킨 후, Optim Development Studio를 사용하여 영향을 분석할 수 있다.
  • iBATIS 애플리케이션에서 pureQuery의 이기종 일괄처리 기능을 사용할 수 있다. 이 기능을 이용하면 다수의 INSERT, UPDATEDELETE 요청에서 많은 테이블을 참조하는 경우에도 이러한 요청을 일괄처리할 수 있다. 이기종 일괄처리 기능을 사용하면 데이터베이스에 한 번만 액세스해도 전체 테이블에서 이러한 업데이트 작업을 수행할 수 있다. 데이터베이스 서버로의 각 네트워크 라운드 트립은 성능을 감소시키는 주요 요인이다. 따라서 일괄처리 용량이 크고 라운드 트립 수가 적을수록 성능이 향상된다. 이 기능은 DB2와 Informix 데이터베이스 서버를 대상으로 사용할 수 있다.

iBATIS 프로젝트 관련 참고사항

iBATIS 프로젝트는 2010년 초에 Apache에서 분리되었다. 이제는 MyBatis라고 부른다. IBM Integration Module을 iBATIS v2.3.x와 함께 사용할 수 있으며 MyBatis나 이전 iBATIS 중 어느 하나를 사용하면 된다.

이 기사에서는 IBM Integration Module for iBATIS and pureQuery를 설정하여 사용하는 방법을 설명한다. 먼저, IBM Integration Module의 정적 SQL 기능을 설명한 다음, 이기종 일괄처리 기능을 설명한다. 이 기사에서는 독자가 iBATIS V2.3을 다소 알고 있다고 가정하며 관련 지시사항은 iBATIS V2.3.x를 기준으로 한다. 또한, 애플리케이션 코드를 변경하지 않아도 IBM Integration Module의 이점을 활용할 수 있다.


IBM Integration Module for iBATIS and pureQuery를 사용하여 정적 SQL 작성하기

이 섹션에서는 동적 SQL을 사용할 때와 IBM Integration Module을 사용하여 정적 SQL을 작성하고 사용할 때의 iBATIS 애플리케이션의 기본 실행 경로의 차이점을 설명한다. 정적 SQL과 정적 SQL을 사용함으로써 얻을 수 있는 성능상의 잠재적 이점에 대한 배경지식은 이 기사의 참고자료 섹션에 링크된 정적 SQL 관련 기사를 참조하기 바란다.

JDBC를 사용한 동적 SQL 실행

그림 1에는 일반적인 iBATIS 애플리케이션의 상위 레벨 실행 플로우가 표시되어 있다. iBATIS SQLMap 파일에 작성되어 있는 모든 SQL문은 JDBC를 사용하여 조작을 준비하고 실행하는 데이터베이스를 대상으로 실행된다.


그림 1. iBATIS 애플리케이션의 일반적인 실행 과정(동적)
iBATIS는 SQLMap 파일에서 SQL 문자열을 읽은 후, JDBC 드라이버를 거쳐 데이터베이스로 이동한다.

IBM Integration Module을 사용한 정적 SQL 실행

그림 2에는 IBM Integration Module을 사용하는 경우의 iBATIS 애플리케이션의 상위 레벨 실행 플로우가 표시되어 있다. 정적 SQL을 실행하기 위해 DB2 패키지를 작성했다. 그림 4는 다음과 같은 과정을 나타낸다.

  1. SQL 생성 단계(iBatisGen)에서는 iBATIS 애플리케이션에서 사용하는 정적 SQL을 pureQuery XML 파일(.pdqxml)에 수집한다. 그러면 이 파일을 Optim Development Studio에서 사용하여 바인드 단계를 거치지 않고도 성능 조정이나 영향 분석을 할 수 있다. pureQuery XML 캡처 파일은 정적 바인더를 사용하여 정적 패키지에 바인드할 수 있다.
  2. 애플리케이션이 실행되는 동안 pureQuery 런타임은 JDBC 호출 경로를 재지정하여 생성 단계에서 작성된 DB2 정적 패키지를 실행한다. pdq.properties 파일은 pureQuery 런타임 실행 동작(동적 또는 정적)을 제어하고 pureQuery XML 파일의 위치를 제공한다.

그림 2. IBM Integration Module을 사용하여 iBATIS 애플리케이션에서 정적 SQL 실행
iBatisGen이 PDQXML 파일을 생성하면 이 파일은 DB2에 정적 패키지를 생성한다. pureQuery는 JDBC 호출 경로를 재지정하여 정적 패키지가 실행되도록 한다.

IBM Integration Module에서는 어떤 SQL이 추출되나?

IBM Integration Module은 애플리케이션의 iBATIS SQLMAP 파일에 정의된 모든 SQL문을 추출하지만 다음은 예외이다.

  • CALL, VALUESDDL SQL문
  • iBATIS 동적 구문에 포함된 SQL문

IBM Integration Module을 사용하는 이기종 일괄처리 인에이블먼트 개요

앞서 살펴본 바와 같이 pureQuery 이기종 일괄처리 기능을 이용하면 네트워크 비용을 절약할 수 있다. 이번 섹션에서는 iBATIS 애플리케이션에서 사용한 기본적인 이기종 일괄처리 기능과 pureQuery 이기종 일괄처리 기능의 차이점을 살펴본다.

iBATIS의 기본적인 일괄처리(JDBC 사용)

그림 3에는 pureQuery 이기종 일괄처리 기능을 사용하지 않는 경우의 샘플 iBATIS 애플리케이션의 상위 레벨 실행 플로우가 표시되어 있다. iBATIS에 있는 기본 SqlExecutor는 iBATIS startBatchexecuteBatch 호출 사이에서 실행된 INSERT, UPDATEDELETE문을 JDBC 동종 일괄처리 기능을 사용하여 일괄처리한다.


그림 3. 기본적인 JDBC 동종 일괄처리
iBATIS는 SQLMAP 파일에 있는 SQL문을 이용하여 일괄처리를 작성한 후, JDBC 드라이버를 거쳐 데이터베이스로 이동한다.

iBATIS의 이기종 일괄처리(pureQuery 사용)

그림 4에는 pureQuery 이기종 일괄처리 기능을 사용하는 경우의 샘플 iBATIS 애플리케이션의 상위 레벨 실행 플로우가 표시되어 있다. pureQuery SqlExecutor는 iBATIS startBatchexecuteBatch 사이에서 실행된 INSERT, UPDATEDELETE문을 이기종 일괄처리 기능을 사용하여 일괄처리한다.

IBM Integration Module은 SqlExecutor 인터페이스를 구현하여 pureQuery 일괄처리 기능을 활용하며 INSERT, UPDATEDELETE문을 JDBC 대신 pureQuery로 라우트한다.


그림 4. pureQuery 이기종 일괄처리 기능을 사용하는 상태에서의 iBATIS 애플리케이션의 실행 플로우
사용자 정의 Batcher, pureQuery 런타임, sqlj 및 jdbc 데이터 서버 드라이버, 데이터베이스 순으로 조작된다.

IBM Integration Module for iBATIS and pureQuery를 사용하는 데 필요한 선수조건

참고자료 섹션에는 IBM Integration Module for iBATIS and PureQuery를 다운로할 수 있는 링크가 있다.

소프트웨어

IBM Integration Module for iBATIS and PureQuery를 사용하는 데 필요한 소프트웨어 요구사항은 다음과 같다.

  • Optim pureQuery Runtime 2.2.0.3 이상. (IBM Optim Development Studio 및 Optim pureQuery Runtime 30일 시험판을 다운로드할 수 있는 링크는 참고자료 섹션을 참고한다. Optim pureQuery Runtime은 Optim Development Studio와 같은 시스템에 설치해야 한다.)
  • 클래스 경로에 pdq.jar과 pdqmgmt.jar이 있는지 확인한다.
  • IBM Data Server Driver for JDBC and SQLJ 3.58이나 4.7(Optim Development Studio를 통해 사용하거나 참고자료 섹션의 다운로드 링크를 참조한다.)
  • iBATIS V2.3.x.xxx.

지원 데이터베이스

IBM Integration Module for iBATIS and pureQuery는 애플리케이션이 다음과 같은 데이터베이스 시스템을 액세스할 때 작동한다.

  • DB2 for Linux®, UNIX®, and Windows® V8.2, 수정팩 11 이상
  • DB2 for Linux, UNIX, and Windows V9.1, V9.5 또는 V9.7
  • DB2 for i V5R4(이기종 일괄처리 기능 전용)
  • DB2 for z/OS® V8 이상
  • Informix Dynamic Server V11.10 또는 V11.5(이기종 일괄처리 기능 전용)

이 기사에서 사용한 샘플 애플리케이션

이 기사의 다운로드 섹션에 있는 DemoIbatisApp.zip 파일에는 이 기능을 시험하는 데 사용할 수 있는 샘플 애플리케이션이 포함되어 있다.


iBATIS 애플리케이션에서 pureQuery 정적 SQL 사용하기

이 섹션에서는 정적 SQL과 관련하여 IBM Integration Module이 어떤 역할을 하는지 샘플 iBATIS 애플리케이션을 통해 설명한다.

클래스 경로 구성

샘플 애플리케이션을 컴파일하려면 iBATIS 애플리케이션에 필요한 jar 파일과 더불어 해당 클래스 경로에 다음과 같은 jar 파일이 있어야 한다.

  • iBATIS jar 파일(예: iBatis-2.3.x.xxx.jar)
  • pdqibatis.jar(IBM Integration Module과 함께 제공)

또한, IBM Integration Module을 사용하려면 클래스 경로에 다음과 같은 파일이 있어야 한다.

  • pdq.jar
  • pdqmgmt.jar
  • db2jcc jars

versionValidator 유틸리티를 사용하여 선수조건 확인

IBM Integration Module에는 클래스 경로에 있는 iBATIS, JDBC 드라이버 및 pureQuery Runtime의 버전에 대한 선수조건을 확인하는 versionValidator 프로그램이 있다. Listing 1에는 이 프로그램을 실행하는 명령이 표시되어 있다.


Listing 1. versionValidator 프로그램을 실행하는 명령

 java
com.ibm.pdq.ibatis.utility.VersionValidator 

클래스 경로에 포함된 jar 파일의 레벨이 올바르면, versionValidator 프로그램은 Listing 2에 있는 것과 비슷한 메시지를 표시한다.


Listing 2 선수조건이 올바른 경우의 versionValidator 프로그램의 출력 내용

 > set
CLASSPATH=./pdq.jar;./pdqmgmt.jar;./ibatis-2.3.4.726.jar;./db2jcc.jar;
./pdqibatis.jar > java
com.ibm.pdq.ibatis.utility.VersionValidator IBM
integration module version: 2.2.0.3 Found
pdqmgmt.jar PDQ 런타임 버전: 2.18.120 IBM DB2 JDBC
Universal Driver: 3.58 Java 버전: 1.6.0 

클래스 경로에 포함된 jar 파일 중에 레벨이 올바르지 않은 파일이 있는 경우에는 versionValidator 프로그램이 적절한 오류 메시지를 표시한다. 예를 들면, Listing 3에 있는 메시지는 IBM Integration Module과 함께 작동하기에는 DB2 JDBC 드라이버의 레벨이 올바르지 않으며 클래스 경로에 필수 PDQ jar 파일이 없음을 나타낸다.


Listing 3. 선수조건이 올바르지 않음을 나타내는 versionValidator의 출력
                                                
> set
CLASSPATH=./ibatis-2.3.4.726.jar;./db2jcc.jar;./pdqibatis.jar
> java com.ibm.pdq.utility.VersionValidator IBM
 integration module version: 2.2.0.3 **** ERROR.
pdqmgmt.jar not found in classpath **** ERROR.
pdq.jar not found in class path Found IBM DB2 JDBC
Universal Driver version: 3.53 **** ERROR. Incorrect
level. Requires V3.58 or higher java version: 1.6.0 

샘플 애플리케이션의 데이터베이스 준비

다음 단계를 따라 샘플 애플리케이션의 데이터베이스를 준비한다.

  1. ibatdemo 데이터베이스를 작성한다.
  2. DemoiBatisApp.zip 파일의 압축을 풀고 샘플 애플리케이션을 Java 프로젝트로서 Optim Development Studio 작업공간으로 가져온다. 샘플 애플리케이션은 다음과 같은 Java 빈을 사용한다.
    • Customer가 서브클래스인 CustomerInfo
    • District
    • Item
    • Order
  3. 클래스 경로 구성에 표시된 것과 동일한 jar 파일을 프로젝트 빌드 경로에 삽입한다. 해당 프로젝트를 마우스 오른쪽 단추로 클릭하고 pureQuery > Add pureQuery support...를 선택하여 프로젝트 빌드 경로에 pureQuery와 IBM Data Server for JDBC and SQLJ jar 파일을 추가할 수 있다.
  4. SqlMapConfig.properties 파일을 편집하여 해당 시스템에 올바른 데이터베이스 특성을 지정한다. 샘플 애플리케이션에서는 이 파일이 src\demo\data\SqlMapConfig.properties에 있으며 Listing 4에 표시되어 있다. 이 프로세스를 올바르게 수행되려면 다음 단계에서 이 파일이 필요하다.

    Listing 4. SqlMapConfig.properties 파일 세부사항
     
    driver=com.ibm.db2.jcc.DB2Driver
    url=jdbc:db2://localhost:50000/ibatdemo
    dataSourceType=SIMPLE username=db2admin
    password=db2admin
    #sql_executor_class=com.ibm.pdq.ibatis.executor.PDQSqlExecutor
    

  5. 샘플 애플리케이션에서 데이터베이스 테이블을 작성한다. demo.DatabaseSetup.java를 실행하여 데이터베이스에서 테이블을 작성한다. Optim Development Studio에서 demo.DatabaseSetup.java를 실행하려면 이 파일을 마우스 오른쪽 단추로 클릭한 후, Run As > Java Application을 선택한다. demo.DatabaseSetup.java 파일을 실행하면 샘플 애플리케이션에 필요한 모든 테이블이 데이터베이스에 작성된다.

정적 SQL 실행용 pureQuery XML 파일 생성

iBatisGen 명령을 사용하여 샘플 애플리케이션용 test.pdqxml 파일을 생성한다. 명령 일괄처리 파일인 iBatisGen.bat는 IBM Integration Module과 함께 제공된다. 클래스 경로에는 iBATIS에 필요한 모든 jar 파일과 다음 파일이 같이 있어야 한다.

  • pdqibatis.jar
  • pdq.jar and pdqmgmt.jar
  • db2jcc.jar 및 db2jcc_license_cisuz.jar

Listing 5에는 필수 jar 파일을 삽입하고 iBatisGen 명령을 실행하는 클래스 경로 설정 명령이 표시되어 있다.


Listing 5. iBatisGen.bat를 사용한 PDQXML 파일의 생성
  >
set
CLASSPATH=./iBatis-2.3.4.726.jar;./db2jcc.jar;./db2jcc_license_cisuz.jar;
./pdq.jar;./pdqmgmt.jar;./pdqibatis.jar; > set
CLASSPATH=bin;%CLASSPATH% > iBatisGen -configFile
demo/data/SQLMapConfig.xml 

위 코드에서 bin은 모든 애플리케이션 클래스 파일과 애플리케이션에 필요한 기타 파일(예: iBATIS 및 XML 파일)이 있는 디렉토리이다.

iBatisGen 명령을 완료한 후에는 현재의 작업 디렉토리(iBatisGen.bat 파일이 있는 디렉토리)에 SQLMapConfig.pdqxml 파일이 작성되었는지 확인한다.

참고: iBatisGen 명령은 resultsetHoldability 값에 JDBC 기본값을 사용하여 SQL을 생성한다. 그러나 WebSphere® Application Server는 resultsetHoldability의 기본값으로 다른 값을 사용한다. WebSphere Application Server에 iBATIS 애플리케이션을 전개하는 경우에는 WebSphere Application Server 데이터 소스의 resultsetHoldability를 확인하여 Listing 6과 같이 iBatisGen 명령에서 resultsetHoldability를 지정한다.


Listing 6. iBatisGen WebSphere Application Service 기본값 설정
                                                 
> iBatisGen -configFile
demo/data/SQLMapConfig.xml -resultsetHoldability 2 

iBatisGen 명령과 함께 사용할 수 있는 옵션은 다양하다. 사용 가능한 모든 옵션을 확인하려면 Listing 7과 같이 iBatisGen 명령을 -help 옵션과 함께 실행한다.


Listing 7. iBatisGen 명령의 옵션 표시
                                                 > iBatisGen -help 

정적 SQL을 실행하기 위한 pureQuery XML 파일의 구성 및 바인드

애플리케이션을 정적으로 실행하려면 먼저, 생성된 SqlMapConfig.pdqxml 파일을 구성한 후, 바인드해야 한다. Listing 8과 같은 표준 pureQuery 구성StaticBinder 명령을 사용하여 이 작업을 수행한다. StaticBinder 명령을 실행하면 DB2서버에 패키지가 작성된다. 이러한 명령을 실행할 경우에는 클래스 경로에 pdq.jar, pdqmgmt.jar 및 해당 JCC 드라이버 jar 파일이 있는지 확인한다. 표준 pureQuery 구성StaticBinder 명령에 관한 자세한 정보는 참고자료 섹션을 참조한다.


Listing 8. 정적 SQL을 실행하기 위한 pureQuery XML 파일의 구성 및 바인드
                                                 
> java
com.ibm.pdq.tools.Configure -rootPkgName test
 -pureQueryXml SqlMapConfig.pdqxml > java
com.ibm.pdq.tools.StaticBinder -url
jdbc:db2://localhost:50000/ibatdemo -username xx
-password xx -pureQueryXml SqlMapConfig.pdqxml
 -traceFile demo_trace.txt -traceLevel ALL 

정적 SQL을 사용하는 애플리케이션의 실행

Listing 9에는 샘플 애플리케이션과 함께 포함된 pdq.properties 파일에서 사용된 특성이 표시되어 있다.


Listing 9. 샘플 애플리케이션용 pdq.properties 파일
                                                
pdq.captureMode=OFF pdq.executionMode=STATIC
pdq.pureQueryXml=SqlMapConfig.pdqxml 

다음에는 특성을 설정하는 방법을 설명한다.

  • captureMode=OFF는 캡처가 꺼진 상태임을 나타낸다. 이 시리즈의 첫 번째 기사에서 살펴본 클라이언트 최적화 프로세스를 사용할 경우에만 캡처를 켜야 한다.
  • executionMODE=STATIC은 동적 실행 모드 대신 정적 실행 모드를 사용해야 함을 나타낸다.
  • pureQueryXml=SqlMapConfig.pdqxmliBatisGen 명령을 실행할 때 작성되는 pureQuery XML 파일의 이름과 위치를 지정한다.

모든 pdq 특성에 관한 자세한 정보는 참고자료 섹션을 참조한다.

샘플 애플리케이션에 포함된 실제 pdq.properties 파일의 모든 특성은 주석 처리되어 있다(#으로 시작하는 각 행). 진행하기 전에 파일을 편집하여 # 문자를 삭제하고 세 가지 특성의 주석 처리를 해제한 후, 파일을 저장한다. 이 작업을 완료하면 파일은 Listing 9와 같은 형태가 된다.

이제 MainClient.java를 실행하여 샘플 애플리케이션을 실행한다. 이 애플리케이션의 SQL문은 정적으로 실행된다.

Optim Development Studio에서 MainClient.java를 실행하려면 이 파일을 마우스 오른쪽 단추로 클릭한 후, Run As > Java Application을 선택한다.


iBATIS 애플리케이션에서 pureQuery 이기종 일괄처리 기능 사용하기

pureQuery의 이기종 일괄처리 기능을 사용하려면 iBATIS V2.3.5나 MyBatis V2.3.5를 사용해야 한다. 참고자료 섹션에는 이 버전을 다운로드할 수 있는 링크가 있다.

iBATIS API의 startBatchexecuteBatch 호출 사이에서 실행되는 INSERT, UPDATEDELETE문에서 이기종 일괄처리 기능을 지원하기 위해 이 기능을 켜려면 pureQuery SqlExecutor를 iBATIS에 등록해야 한다. 이렇게 하려면 SqlMapConfig 특성 파일을 편집하여 sql_executor_class 특성의 값을 com.ibm.pdq.ibatis.executor.PDQSqlExecutor로 설정한다.

샘플 애플리케이션에 포함된 SqlMapConfig.properties 파일에는 이 특성이 주석 처리되어 있다(#으로 시작하는 행). 이 기능을 켜서 샘플 애플리케이션에 이기종 일괄처리 기능을 지원하려면 SqlMapConfig.properties 파일을 간단히 편집하여 # 문자를 삭제하고 해당 특성에서 주석을 제거한 후, 파일을 저장한다. 주석 문자를 제거하면 해당 특성이 Listing 10과 같은 형태가 된다.


Listing 10. iBATIS에서 pureQuery 일괄처리 기능을 사용하는 데 필요한 SqlMapConfig.properties의 필수 특성
                                                
sql_executor_class=com.ibm.pdq.ibatis.executor.PDQSqlExecutor 

이기종 일괄처리 기능이 있는 iBATIS 애플리케이션 실행

이제 MainClient.java를 실행하여 샘플 애플리케이션을 실행한다. pureQuery SqlExecutor는 이기종 일괄처리가 수행되는지 확인한다.


정적 SQL과 이기종 일괄처리 기능 함께 사용하기

정적 SQL과 이기종 일괄처리 기능은 서로 독립적이다. 따라서 iBATIS 애플리케이션에서 정적 SQL과 이기종 일괄처리 기능을 동시에 함께 사용하거나 각 기능을 독립적으로 사용할 수 있다. 각각의 기능을 설정하는 과정에 중복되는 단계는 없다.


결론

IBM Integration Module for pureQuery and iBATIS로 iBATIS 애플리케이션에서 DB2 서버를 대상으로 정적 SQL을 실행할 수 있다. 이 도구는 원래 SQL문이 있던 SQLMap 파일에서 iBATIS 아티팩트로 SQL문을 링크함으로써 문제점을 판별하는 기능을 강화한다. 이제 IBM DB2 정적 SQL의 모든 이점 즉, 정적 SQL을 사용하면 런타임 시 준비 과정이 필요 없고 SQL이 최적화되며 SQL 주입 위험이 줄어들기 때문에 성능이 개선되고 DBMS 패키지에만 권한이 부여되기 때문에 보안 기능이 개선된다는 점을 활용할 수 있다.

IBM Integration Module for PureQuery and iBATIS를 이용하여 이기종 일괄처리 기능을 적절한 애플리케이션과 함께 사용하면 DB2와 Informix 데이터 서버에 대한 경과 시간을 대폭 개선할 수 있다. 이러한 성능상의 개선 효과는 JEE와 J2SE 환경 모두에 적용된다.



다운로드 하십시오

설명이름크기다운로드 방식
Sample iBATIS application for this articleDemoIbatisApp.zip22KBHTTP

다운로드 방식에 대한 정보


참고자료

교육

제품 및 기술

토론

필자소개

Ambrish Bhargava photo

Ambrish Bhargava is a Staff Software Engineer in the Open Source Team at IBM India Software Labs. He works on providing DB2 Static SQL support for iBATIS and Hibernate applications. Previously, he worked on the development of PHP extensions for IBM DB2 and Informix, and he originally developed the DB2-Django adapter. He graduated with an M.Tech in Information Technology from IIIT, Bangalore.

Mario  Briggs photo

Mario Briggs leads the Open Source offerings for IBM DB2 and IBM Informix including PHP, Ruby/Rails, Python/Django/SqlAlchemy, Perl, and Java data access frameworks. Mario has about 11 years of experience in Software development with many of those years spent in the area of data access, relational engines, and application-database performance.

잘못된 도움말 신고

부정사용 신고

감사합니다. 이 항목은 운영자가 관심을 표시했습니다.


잘못된 도움말 신고

부정사용 신고

제출실패 신고. 나중에 다시 실행해주세요.


디벨로퍼웍스 로그인


IBM ID가 필요하세요?
IBM ID를 잊으셨습니까?


비밀번호를 잊으셨습니까?
비밀번호 변경

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관.

 


developerWorks에 처음 로그인하면 developerWorks프로파일이 생성됩니다.귀하의 프로파일에서 동의하신 내용이 공개되지만 이 사항은 언제든지 변경 가능합니다. 귀하의 성명(숨김으로 체크되어 있어도 표시됩니다)과 디스플레이 이름은 게시한 컨텐츠나 사이트 엑세스시 표시됩니다.

화면상에 보여지는 닉네임을 정하세요.

처음 developerWorks에 로그인할 때 프로파일이 작성되므로, 이를 위해 디스플레이 이름을 선택해야 합니다. 선택하신 디스플레이 이름은 developerWorks에 게시한 컨텐츠에 표시됩니다.

3글자 이상 31글자 이하의 길이로 사용 가능합니다. dW커뮤니티 내에서는 보안상 이메일주소를 제외한 다른 이름을 지정하셔야 합니다.

3개의 &이나 대쉬를 포함해주시고 31글자내로 제한해주세요.


developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관.

 


아티클 순위

의견

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=20
Zone=Information Management, 자바, 오픈 소스
ArticleID=600157
ArticleTitle=pureQuery를 사용하여 Hibernate와 iBATIS 애플리케이션 성능 개선하기, Part2 : IBM Integration Module for iBATIS and pureQuery 사용하기
publish-date=09162010

태그

Help
검색 필드를 사용하여 My developerWorks 내에서 해당 태그가 사용된 모든 종류의 컨텐츠를 검색하십시오.

태그를 더 많이 보거나 적게 보기 위해 슬라이더 막대를 사용하십시오.

인기 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 최고 인기 태그를 보여줍니다.

내 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 귀하의 태그를 보여줍니다.

검색 필드를 사용하여 My developerWorks 내에서 해당 태그가 사용된 모든 종류의 컨텐츠를 검색하십시오. 인기 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 최고 인기 태그를 보여줍니다. 내 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 귀하의 태그를 보여줍니다.