다이어그램에서 사용되는 규칙을 이해하려면 구문 다이어그램 읽는 방법을 참조하십시오.
DB2 패키지에 정적으로 바인드된 Embedded SQL을 사용하는 애플리케이션은 성능, 신뢰성, 보안, 모니터링 및 관리 영역에서 고유의 이점을 갖습니다.
StaticBinder 유틸리티를 실행하기 전에 pureQuery Generator 유틸리티를 실행하여 바인드하려는 SQL문을 포함하는 인터페이스에 대한 구현 클래스를 생성하십시오. pureQuery Generator 유틸리티가 실행될 때, 정적 DB2 패키지를 작성하는 데 필요한 모든 정보가 생성된 구현 클래스에 수집되고 저장됩니다. 이 정보에는 Java™ 클래스 정의 및 목표 데이터베이스의 모든 컬럼 또는 매개변수 메타데이터 둘 다에서 수집된 SQL문 및 모든 적용 가능 데이터 유형 정보가 포함됩니다. 해당 정보는 또한 DB2 패키지의 루트 패키지 이름과 선택적으로 콜렉션 ID 및 버전도 포함합니다.
StaticBinder 유틸리티는 DB2 패키지를 작성 및 바인드할 때 구현 클래스에서 이 정보를 읽습니다. StaticBinder 유틸리티를 실행할 때 명령행에서 정보를 읽어올 구현 클래스 또는 이러한 클래스에 해당하는 인터페이스를 지정할 수 있습니다. 옵션 파일을 사용하는 경우, 하나 이상의 인터페이스를 지정할 수 있습니다. StaticBinder 유틸리티는 해당 구현 클래스에서 정보를 읽어옵니다.
생성 프로그램 유틸리티를 실행하는 경우 -forceSingleBindIsolation 옵션을 사용하면, 분리 레벨 번호가 작성된 패키지의 이름에 추가되지 않습니다.
바인드를 수행할 때 -isolationLevel 옵션을 사용하거나 바인드 옵션 문자열에 분리 레벨을 지정하는 경우, 지정한 분리 레벨의 DBRM 파일 또는 패키지만이 작성됩니다. 이름은 4개의 분리 레벨 모두에 대해 패키지 또는 DBRM 파일을 작성할 때 StaticBinder가 사용한 규칙을 따릅니다.
옵션 파일은 pureQuery StaticBinder 유틸리티가 처리할 인터페이스를 나열하며 StaticBinder 유틸리티에 인터페이스 처리 방법을 명령합니다. 옵션 파일에서 나열된 인터페이스 모두에 적용되는 기본 옵션을 설정할 수 있습니다. 인터페이스로 옵션을 설정하여 기본 옵션을 겹쳐쓰고 개별 인터페이스에 특정적인 기타 옵션을 설정할 수도 있습니다.
StaticBinder 유틸리티를 실행할 명령에 -optionsFile 옵션과 함께 사용할 파일을 지정할 수 있습니다.
defaultOptions = -bindOptions "QUALIFIER qual1" -url jdbc:db2://SRVR01:50000/DB01 -username user01 -password pass01 com.myCompany.MyInterfaceA = -bindOptions "QUALIFIER qual2" com.myCompany.MyInterfaceB com.myCompany.MyInterfaceC = -url jdbc:db2://SRVR01:50001/DB02 -username user02 -password pass02이 예에서 defaultOptions로 시작된 행은 DB2 패키지의 규정자를 지정하며 기본 연결 URL을 설정합니다. 다음 행은 기본 규정자를 겹쳐쓴 규정자가 포함된 인터페이스를 지정합니다. 다음 행은 모든 기본 옵션이 적용되는 인터페이스를 지정합니다. 마지막 행은 다른 데이터베이스에 대해 바인드될 인터페이스를 지정합니다.
-pkgVersion "ver#1"
Linux, UNIX 및 Windows용 DB2 데이터베이스: 사용자에게 SYSADM 권한은 있지만 바인드를 완료할 명시적 특권이 없는 경우, DB2 데이터베이스 관리 프로그램이 명시적 DBADM 권한을 자동으로 부여합니다.
이 명령을 사용하여, 사용자 애플리케이션을 포함하는 아카이브에 대해 StaticBinder 유틸리티를 실행할 수 있습니다. 아카이브는 StaticBinder 유틸리티에 제공할 인터페이스 및 구현 클래스를 포함해야 합니다. 확장자가 .bindProps이며 인터페이스 및 구현 클래스를 나열하는 옵션 파일을 사용하십시오.
(1) >>-java--com.ibm.pdq.tools.StaticBinder-------------------------> (2) >-------- -url--jdbc--:--db2--:--//--server--+---------+--/--database--> '-:--port-' >-- -username--user-ID-- -password--password--------------------> >-- -archive-- -filename--+-.ear-+------------------------------> +-.jar-+ +-.war-+ '-.zip-' >--+------------------------------------------------------------------------+--> | (3) | +-| DBRM options |-------------------------------------------------------+ +- -bindOptions-- -"--bind-options--"--+-------------------------------+-+ | '- -verifyPackages--+-DETAIL--+-' | | '-SUMMARY-' | '- -verifyPackages--+-DETAIL--+------------------------------------------' '-SUMMARY-' >--+-----------------------------+--+----------------+----------> | .-FALSE-. | | (4) | '- -differenceOnly--+-TRUE--+-' '-| -grant |-----' >--+--------------------------+--+-----------------------+----->< '- -isolationLevel--+-CS-+-' | (5) | +-RR-+ '-| Trace options |-----' +-RS-+ '-UR-'
이 명령을 사용하여 인터페이스 또는 구현 클래스의 이름을 지정하고 DB2 패키지 또는 DBRM 파일 작성을 위한 옵션을 지정할 수 있습니다.
(1) >>-java--com.ibm.pdq.tools.StaticBinder-------------------------> (2) >-------- -url--jdbc--:--db2--:--//--server--+---------+--/--database--> '-:--port-' >-- -username--user-ID-- -password--password--------------------> >--+------------------------------------------------------------------------+--> | (3) | +-| DBRM options |-------------------------------------------------------+ +- -bindOptions-- -"--bind-options--"--+-------------------------------+-+ | '- -verifyPackages--+-DETAIL--+-' | | '-SUMMARY-' | '- -verifyPackages--+-DETAIL--+------------------------------------------' '-SUMMARY-' >--+-----------------------------+--+----------------+----------> | .-FALSE-. | | (4) | '- -differenceOnly--+-TRUE--+-' '-| -grant |-----' >--+--------------------------+--+-----------------------+------> '- -isolationLevel--+-CS-+-' | (5) | +-RR-+ '-| Trace options |-----' +-RS-+ '-UR-' .------------------------. V | >-- -interface----Java-package.interface-+---------------------><
명령 및 옵션 파일을 사용하여 인터페이스의 이름을 지정하고 해당 인터페이스 각각을 기반으로 하는 DB2 패키지 또는 DBRM 파일 작성을 위한 옵션을 지정할 수 있습니다.
(1) >>-java--com.ibm.pdq.tools.StaticBinder-------------------------> >--+---------------------------------------------------------------------------------------------------------+--> '- -url--jdbc--:--db2--:--//--server--+---------+--/--database-- -username--user-ID-- -password--password-' '-:--port-' >--+-----------------------------------------------+------------> | .------------------------------. | | V | | '- -interface----Java-package.interface.class-+-' >-- -optionsFile--file-name--+-----------------------+----------> | (2) | '-| Trace options |-----' >--+-------------------------------+--------------------------->< '- -verifyPackages--+-DETAIL--+-' '-SUMMARY-'
이 구문 다이어그램에서는 옵션 파일에 나열하는 모든 인터페이스에 대해 설정할 수 있는 기본 옵션에 대해 설명합니다.
(1) >>-defaultOptions--=--------------------------------------------> >--+---------------------------------------------------------------------------------------------------------------+--> | (2) | '------- -url--jdbc--:--db2--:--//--server--+---------+--/--database-- -username--user-ID-- -password--password-' '-:--port-' >--+---------------------------------------------+--------------> '-+-----------------------------------------+-' '-+- -bindOptions-- -"--bind-options--"-+-' | (3) | '-| DBRM options |--------------------' >--+----------------+--+--------------------------+-------------> | (4) | '- -isolationLevel--+-CS-+-' '-| -grant |-----' +-RR-+ +-RS-+ '-UR-' >--+-----------------------+----------------------------------->< | (5) | '-| Trace options |-----'
이 구문 다이어그램에서는 옵션 파일에 나열하는 각 인터페이스에 대해 설정할 수 있는 옵션에 대해 설명합니다.
(1) >>-Java-package.interface--=------------------------------------> >--+---------------------------------------------------------------------------------------------------------------+--> | (2) | '------- -url--jdbc--:--db2--:--//--server--+---------+--/--database-- -username--user-ID-- -password--password-' '-:--port-' >--+---------------------------------------------+--------------> '-+-----------------------------------------+-' '-+- -bindOptions-- -"--bind-options--"-+-' | (3) | '-| DBRM options |--------------------' >--+----------------+--+--------------------------+------------>< | (4) | '- -isolationLevel--+-CS-+-' '-| -grant |-----' +-RR-+ +-RS-+ '-UR-'
com.ibm.pdq.tools.StaticBinder 클래스의 bind() 메소드를 사용하여 런타임 시 애플리케이션의 SQL문을 DB2 패키지로 바인드합니다. 바인드 조작이 실패하면 메소드는 FALSE 값을 리턴하며 바인드 조작이 성공적으로 실행되면 TRUE 값을 리턴합니다.
메소드에는 두 개의 매개변수가 포함됩니다. 첫 번째는 StaticBinder 유틸리티로 인수를 전달하는 문자열 배열입니다. 두 번째는 StaticBinder 유틸리티가 메시지와 예외를 인쇄하는 PrintWriter 오브젝트입니다.
bind() 메소드에 대한 호출 예는 다음과 같습니다.
StaticBinder binder = new StaticBinder (); PrintWriter out = new PrintWriter( new FileWriter("BinderOutput.txt")); String[] argsArray = {"-user","username","-password","password", "-url","JDBC-URL","-interface","interface-class"}; Boolean check=binder.bind(argsArray, out);
아카이브에 확장자가 .bindProps이고 StaticBinder 유틸리티에 제공하는 pureQueryXML 파일을 나열하는 옵션 파일이 있을 수 있습니다. 명령의 부분으로 .bindProps 파일을 지정하지 않으면 StaticBinder 유틸리티가 아카이브에서 .bindProps 파일을 검색합니다. StaticBinder 유틸리티는 아카이브에서 첫 번째로 찾은 .bindProps 파일을 사용합니다. 상위 레벨 EAR, JAR 또는 WAR에서 검색을 시작합니다.
StaticBinder 명령을 사용하여 .bindProps 파일의 이름을 지정한 경우에는 지정된 파일이 사용됩니다.
DAO 구현에 -archive 옵션을 바인드할 때 StaticBinder 유틸리티는 구현 클래스를 로드하여 정보를 구합니다. 클래스를 로드하려면 EAR, JAR 또는 WAR 파일에서 종속 클래스를 로드해야 할 수도 있습니다.
-archive 옵션을 사용하는 바인드 오퍼레이션 중에 StaticBinder 유틸리티가 찾을 수 없는 클래스에 대한 오류를 리턴할 수 있습니다. 예를 들어, 애플리케이션 서버 컨텍스트가 필요한 일부 엔터프라이즈 애플리케이션이 이러한 오류를 리턴합니다.
StaticBinder 유틸리티 로드 종속성을 최소화하려면 Apache BCEL 라이브러리를 클래스 경로에 둡니다. StaticBinder 유틸리티에서 BCEL 라이브러리를 사용할 수 있으면 유틸리티는 바이트코드 수정을 사용하여 구현 종속성을 제외하고 로드된 클래스의 수를 최소화합니다. 대부분의 경우, 라이브러리를 클래스 경로에 추가하면 찾을 수 없는 클래스로 인한 오류가 해결됩니다.
Apache BCEL JAR 파일은 pureQuery Runtime과 함께 제공되지 않습니다. BCEL 라이브러리는 Apache 프로젝트 웹 사이트에서 사용 가능합니다.
문자열 구문은 "option_1 value_1 option_2 value_2"입니다.
StaticBinder 유틸리티가 DBRM 파일을 생성한 후 해당 파일을 데이터 세트에 복사해야 합니다. 기본 DBRM 데이터 세트 이름은 prefix.DBRMLIB.DATA이며 여기서 prefix는 사용자에 대해 TSO 프로파일에 지정된 상위 레벨 규정자입니다. prefix는 일반적으로 TSO에서의 사용자 ID입니다.
DBRM 데이터 세트가 존재하지 않는 경우 이를 작성해야 합니다. DBRM 데이터 세트에는 모든 SQL문을 보관하기 위한 스페이스 및 각 호스트 변수 이름과 일부 헤더 정보를 위한 추가 스페이스가 필요합니다. 헤더 정보에는 대략 각 DBRM에 대해 두 개의 레코드, 각 SQL 레코드용으로 20바이트 및 각 호스트 변수용으로 6바이트가 필요합니다. DBRM의 정확한 형식은 prefix.SDSNMACS 라이브러리에서 DBRM 맵핑 매크로인 DSNXDBRM을 참조하십시오.
다음 구문 다이어그램은 DBRM 파일 생성 옵션을 설명합니다.
>>- -generateDBRM--+-TRUE--+-- -outputDBRMPath--path----------->< '-FALSE-'
생성된 DBRM 파일의 루트 이름은 Generator 유틸리티를 실행할 때 지정한 루트 패키지 이름입니다. 이 이름이 7자를 넘지 않는다면 StaticBinder 유틸리티가 예외로 처리합니다.
예를 들어, capture.pdqxml이라고 하는 pureQueryXML 파일에 대해 StaticBinder 유틸리티를 실행했다고 가정하겠습니다. 유틸리티는 패키지 MYPKGA, MYPKGB 및 MYPKGC를 작성합니다. 그러면 사용자는 워크벤치에서 capture.pdqxml의 명령문 세트 MYPKGA를 편집하고 -cleanConfigure 옵션을 기본값 FALSE로 하여 이 파일에 대해 Configure 유틸리티를 실행합니다. Configure 유틸리티는 새 일관성 토큰을 명령문 세트에 지정합니다. 이 세트가 변경되었기 때문입니다. MYPKGA의 새 버전을 바인드하기 위해 다시 capture.pdqxml에서 StaticBinder 유틸리티를 실행하는 경우 -differenceOnly TRUE를 지정합니다. 유틸리티는 MYPKGA만 리바인드하고 다른 두 패키지는 리바인드하지 않습니다.
.-,--------------------. V | >>- -grant-- "--grantees--(----+-authorization-ID-+-+--) - "--->< '-PUBLIC-----------'
Linux, UNIX 및 Windows용 DB2 데이터베이스: USER, GROUP 및 ROLE 키워드를 사용할 수 있습니다. 이들 키워드에 관한 정보는 GRANT(패키지 특권) 명령문을 참조하십시오.
z/OS용 DB2: ROLE 키워드를 사용할 수 있습니다. 이 키워드에 관한 정보는 GRANT(패키지 특권)를 참조하십시오.
제한사항: -generateDBRM 옵션 값이 TRUE이면 -grant 옵션을 사용할 수 없습니다.
옵션 파일에 인터페이스의 엔트리가 없는 경우 StaticBinder 유틸리티는 명령행에 있는 바인드 옵션과 옵션 파일의 defaultOptions 엔트리에 있는 바인드 옵션을 사용합니다.
분리 레벨은 패키지에 있는 모든 SQL문에 적용됩니다. 분리 레벨을 JDBC 및 SQLJ용 IBM® 데이터 서버 드라이버의 Connection.setTransactionIsolation() 메소드를 통해 설정하면, pureQuery는 정적으로 실행된 명령문의 해당 분리 레벨을 무시합니다.
>>-+------------------------+--+---------------------------+--->< '- -traceFile--file-name-' | .-OFF-----. | '- -traceLevel--+-ALL-----+-' +-SEVERE--+ +-WARNING-+ +-INFO----+ +-CONFIG--+ +-FINE----+ +-FINER---+ '-FINEST--'
예를 들어 테이블 순서를 쿼리하고 갱신하는 메소드를 선언하는 OrdersData라는 인터페이스에서 생성 프로그램 유틸리티를 실행했다고 가정합니다. 생성 프로그램 유틸리티는 구현 클래스 OrdersDataImpl을 작성합니다.
유틸리티를 실행했을 때 -collection, -pkgVersion 및 -rootPkgName 옵션에 대한 값이 제공되었으며 유틸리티는 이들 값을 구현 클래스에 저장했습니다. 이 클래스의 이름을 지정하는 StaticBinder 유틸리티를 실행하면 유틸리티가 DB2 패키지를 작성합니다.
나중에 StaticBinder 유틸리티가 구현 클래스에서 작성한 패키지 목록을 볼 수 있습니다. 유틸리티를 실행 시, -verifyPackages 옵션을 사용하여 DETAIL 값을 지정하고 다시 클래스 이름을 제공할 수 있습니다.
-collection, -pkgVersion 및 -rootPkgName 옵션 값이 StaticBinder 유틸리티를 이전에 실행했을 때와 같다면, 유틸리티가 해당 패키지를 찾아 나열합니다.
하지만 먼저 StaticBinder 유틸리티를 실행하고 -collection, -pkgName 및 -rootPkgName 값을 변경한 후 OrdersData 인터페이스에서 생성 프로그램 유틸리티를 실행하면, StaticBinder 유틸리티가 이들 옵션의 새 값과 일치되는 패키지를 찾지 못합니다. 보고서에서 StaticBinder 유틸리티는 찾고 있는 패키지가 없다고 보고합니다.
구현 클래스를 생성하고 해당 클래스나 연관된 인터페이스에서 StaticBinder 유틸리티를 실행한 후, 해당 인터페이스에서 다시 생성 프로그램 유틸리티를 실행하지 않고 -collection, -pkgVersion 및 -rootPkgName에 대해 다른 값을 제공하지 않았다는 전제 하에서 -verifyPackages 옵션이 동작합니다.
이 옵션은 -bindOptions 옵션과 함께 지정할 수 있습니다. 하지만 StaticBinder 유틸리티는 패키지를 바인드하지 않습니다. 패키지를 작성할 때 이 옵션을 사용하여 콜렉션을 지정한 경우 -bindOptions만을 사용하여 검증할 패키지 콜렉션을 지정하십시오.