이 주제에는 다음과 같은 섹션이 있습니다.
다이어그램에서 사용되는 규칙을 이해하려면 구문 다이어그램 읽는 방법을 참조하십시오.
pureQuery Generator 유틸리티에는 구현 클래스를 생성할 때 사용할 데이터베이스, JDBC 드라이버 및 인터페이스, Eclipse 환경을 지정하는 매개변수가 필요합니다.
Generator는 입력 인터페이스 파일의 컨텐츠를 분석하고 @Select, @Update 및 @Call 주석에서 참조되는 Data 오브젝트를 쿼리하거나 업데이트하는 Java 코드를 작성합니다. Generator는 쿼리 조작 시 목표 Bean을 채우는 코드를 생성하고 업데이트 시 Bean 컨텐츠를 입력 데이터로 사용합니다.
많은 pureQuery 사용자가 태스크를 사용하여 애플리케이션을 빌드합니다. 이러한 환경에서 pureQuery Generator는 pureQuery 지원이 사용 가능한 Java 프로젝트에 포함된 모든 pureQuery 어노테이션이 있는 메소드 인터페이스에 대해 자동으로 호출됩니다. 인터페이스 구현의 생성은 Java 프로젝트에 대한 일반 빌드 프로세스의 일부로 발생합니다.
그러나 명령행에서 pureQuery Generator를 호출할 수도 있습니다. IBM® Data Studio Developer, IBM Optim™ Development Studio 또는 IBM Data Studio가 설치되어 있어야 합니다. 두 제품 중 설치한 제품에 따라, Generator 유틸리티를 실행할 때 다음 .jar 파일을 시스템 클래스 경로나 JVM 클래스 경로에 포함시켜야 합니다.
Generator 유틸리티가 제품을 시작하지 않습니다. 이 제품이 제공하는 플러그인과 기본 구조만 사용합니다.
옵션 파일은 pureQuery Generator 유틸리티가 처리할 인터페이스를 나열하며 생성 프로그램에 인터페이스 처리 방법을 명령합니다. 옵션 파일에서 나열된 인터페이스 모두에 적용되는 기본 옵션을 설정할 수 있습니다. 인터페이스로 옵션을 설정하여 기본 옵션을 겹쳐쓰고 개별 인터페이스에 특정적인 기타 옵션을 설정할 수도 있습니다.
생성 프로그램을 실행할 명령에 -optionsFile 옵션과 함께 사용할 파일을 지정할 수 있습니다.
defaultOptions = -driverName com.ibm.db2.jcc.DB2Driver -url jdbc:db2://SRVR01:50000/DB01 -username user01 -password passw0rd com.myCompany.MyInterfaceA = -collection NULLID com.myCompany.MyInterfaceB = -collection COLL01 -xmlFile C:\overrides\myInterfaceB_sql2.xml com.myCompany.MyInterfaceC = -url jdbc:db2://SRVR01:50001/DB02 -username user02 -password pass02이 예에서 defaultOptions와 함께 시작되는 행은 데이터베이스 연결 시 사용할 드라이버, 데이터베이스 연결을 위한 URL 및 사용자 이름과 비밀번호를 지정합니다. 이들 설정은 옵션 파일에 있는 인터페이스 모두에 적용됩니다. 인터페이스에 특정적인 행은 이들 인터페이스에 대해서만 옵션을 설정합니다.
-pkgVersion "ver#1"
옵션 파일에서 Java 인터페이스의 세트에 적용되는 생성 특성을 지정하는 항목을 작성할 수 있습니다. groupOptions.group-name으로 시작하는 라인을 작성합니다. 그룹 ID는 group-name의 값입니다. 값 group-name은 pureQuery @Group 어노테이션이 있는 인터페이스에 지정되는 문자열입니다.
@Group ("Payroll") public Interface CalculateTax { … }이 groupOptions.Payroll 항목이 옵션 파일에 지정되면 Generator 유틸리티는 지정된 옵션 설정으로 인터페이스 CalculateTax의 구현 클래스를 생성합니다.
groupOptions.Payroll= -collection Payroll -url "jdbc:db2://com.prod.hr:50000/DB01"@Group 어노테이션에 대한 정보는 pureQuery 유틸리티가 인터페이스를 프로세스하는 방법 제어를 참조하십시오.
지정하는 모든 인터페이스에 대해 동일한 옵션을 사용하려는 경우에 명령만 사용하도록 선택할 수 있습니다.
(1) >>-java--org.eclipse.core.launcher.Main-- -application--com.ibm.pdq.tools.Generator------> >-- -data--temporary-workspace-- -driverName--JDBC-driver-------> >-- -url--connection-URL-- -username--user-ID-- -password--password--> >--+------------------------+-- -rootPath--root_path------------> | .-FALSE-. | '- -noCleanup--+-TRUE--+-' >--+----------------------------+-------------------------------> '- -userClasspath--classpath-' >--+-----------------------------------+------------------------> | .-NULLID----------. | '- -collection--+-collection-name-+-' >--+--------------------------------+---------------------------> '- -pkgVersion-- -+-AUTO-------+-' '-version-ID-' >--+----------------------------------+-------------------------> '- -rootPkgName--package-name-stem-' >--+-----------------------------------------+------------------> | .-INTERFACE---------. | '- -rootPkgPattern--+-INTERFACE_JAVAPKG-+-' '-JAVAPKG_INTERFACE-' >--+----------------------------------------------+-------------> '- -rootPkgExclusion--="--pureQueryXML-file--"-' >--+---------------------------------------+--------------------> | .-FALSE-. | '- -forceSingleBindIsolation--+-TRUE--+-' >--+---------------------+--+-----------------------+-----------> '- -xmlFile--XML-file-' | (2) | '-| Trace options |-----' .------------------------------. V | >-- -interface----Java-package.interface.class-+----------------> >--+---------------------------------------------+------------->< '- -baseDataOverride--Java-package.class-name-'
옵션 파일을 사용하여 인터페이스의 이름과 DB2® 패키지 또는 DBRM 파일 작성을 위한 옵션을 지정할 수 있습니다. 옵션 파일을 사용하여 다른 인터페이스에 대한 다른 옵션을 지정할 수 있습니다.
태스크를 사용하는 경우, 옵션 파일(예: Default.genProps 파일)에 개별적으로 옵션을 지정하려는 인터페이스만 나열할 수 있습니다. defaultOptions 라인은 Java 프로젝트에 있는 모든 인터페이스에 적용됩니다.
(1) >>-java--org.eclipse.core.launcher.Main-- -application--com.ibm.pdq.tools.Generator------> >-- -data--temporary-workspace-- -driverName--JDBC-driver-------> >-- -url--connection-URL-- -username--user-ID-- -password--password--> >-- -optionsFile--file-name--+------------------------+---------> | .-FALSE-. | '- -noCleanup--+-TRUE--+-' >-- -rootPath--root_path--+----------------------------+--------> '- -userClasspath--classpath-' >--+-----------------------+----------------------------------->< | (2) | '-| Trace options |-----'
나머지 두 개의 구문 다이어그램은 옵션 파일에 항목을 작성하는 방법에 대해 설명합니다.
이 구문 다이어그램에서는 옵션 파일에 나열하는 모든 인터페이스에 대해 설정할 수 있는 기본 옵션에 대해 설명합니다.
(1) >>-defaultOptions--=------ -driverName--JDBC-driver-------------> >-- -url--connection-URL-- -username--user-ID-- -password--password--> >--+------------------------+-- -rootPath--root_path------------> | .-FALSE-. | '- -noCleanup--+-TRUE--+-' >--+----------------------------+--+-----------------------+----> '- -userClasspath--classpath-' | (2) | '-| Trace options |-----' >--+-----------------------------------+------------------------> | .-NULLID----------. | '- -collection--+-collection-name-+-' >--+--------------------------------+---------------------------> '- -pkgVersion-- -+-AUTO-------+-' '-version-ID-' >--+---------------------------------------+--------------------> | .-FALSE-. | '- -forceSingleBindIsolation--+-TRUE--+-' >--+---------------------+--------------------------------------> '- -xmlFile--XML-file-' >--+---------------------------------------------+------------->< '- -baseDataOverride--Java-package.class-name-'
이 구문 다이어그램에서는 옵션 파일에 나열하는 각 인터페이스에 대해 설정할 수 있는 옵션에 대해 설명합니다.
(1) >>-Java-package.interface--=------ -driverName--JDBC-driver-----> >-- -url--connection-URL-- -username--user-ID-- -password--password--> >--+-----------------------------------+------------------------> | .-NULLID----------. | '- -collection--+-collection-name-+-' >--+--------------------------------+---------------------------> '- -pkgVersion-- -+-AUTO-------+-' '-version-ID-' >--+----------------------------------+-------------------------> '- -rootPkgName--package-name-stem-' >--+---------------------------------------+--------------------> | .-FALSE-. | '- -forceSingleBindIsolation--+-TRUE--+-' >--+---------------------+--------------------------------------> '- -xmlFile--XML-file-' >--+---------------------------------------------+------------->< '- -baseDataOverride--Java-package.class-name-'
이 구문 다이어그램에서는 그룹 ID가 group-name인 Java 인터페이스 세트에 적용되는, 인터페이스에 설정할 수 있는 옵션을 표시합니다. group-name이 pureQuery @Group 어노테이션이 있는 인터페이스에 지정됩니다. 값 group_name은 대소문자를 구분합니다. 각 값 group_name의 경우 하나의 groupOptions 항목만 옵션 파일에서 허용됩니다.
-rootPkgName특성은 옵션으로 지정할 수 없습니다.
(1) >>-+----------------------------------+-------------------------> '-groupOptions--.--group-name--=---' >-- -driverName--JDBC-driver------------------------------------> >-- -url--connection-URL-- -username--user-ID-- -password--password--> >--+------------------------+-- -rootPath--root_path------------> | .-FALSE-. | '- -noCleanup--+-TRUE--+-' >--+----------------------------+--+-----------------------+----> '- -userClasspath--classpath-' | (2) | '-| Trace options |-----' >--+-----------------------------------+------------------------> | .-NULLID----------. | '- -collection--+-collection-name-+-' >--+--------------------------------+---------------------------> '- -pkgVersion-- -+-AUTO-------+-' '-version-ID-' >--+---------------------------------------+--------------------> | .-FALSE-. | '- -forceSingleBindIsolation--+-TRUE--+-' >--+---------------------+--------------------------------------> '- -xmlFile--XML-file-' >--+---------------------------------------------+------------->< '- -baseDataOverride--Java-package.class-name-'
-isolationLevel 옵션을 사용하여 단일 명령문 세트를 두 개 또는 세 개의 다른 패키지(각 패키지는 다른 분리 수준에 있음)에 바인드하려는 경우, 명령문 세트가 표시되는 pureQueryXML 파일에 대해 Configure 유틸리티를 실행할 때 -forceSingleBindIsolation 옵션을 사용하지 마십시오.
예를 들어, StaticBinder 유틸리티에 대한 옵션 파일에서 다음 두 엔트리를 포함시켰다고 가정하겠습니다.
C:/dir/captureFile.pdqxml:MYPKGA = -isolationLevel UR C:/dir/captureFile.pdqxml:MYPKGA = -isolationLevel CS
captureFile.pdqxml 파일에 대해 Configure 유틸리티를 실행할 때 -forceSingleBindIsolation 옵션을 사용한 경우 StaticBinder 유틸리티는 다음 조치를 수행합니다.
결과는 CS 분리 수준에서 바인드된 단일 MYPKGA 패키지입니다.
결과가 두 개의 MYPKGA 패키지(하나는 UR 분리 수준에서 다른 하나는 CS 분리 수준에서)가 되도록 하려면, captureFile.pdqxml에 대해 Configure 유틸리티를 실행할 때 -forceSingleBindIsolation 옵션을 사용하지 마십시오.
DB2에서는 패키지의 여러 버전이 동시에 존재할 수 있으므로 같은 이름으로 지정된 패키지의 이전 버전을 바꾸지 않고 새 패키지를 바인드할 수 있습니다. 새 패키지에서 문제점이 발생하는 경우 해당 패키지의 이전 버전을 사용할 수 있습니다.
이 옵션을 지정하지 않으면 연속 바인드에서 오는 데이터베이스 패키지가 버전 없이 작성됩니다.
런타임 시 버전 검증은 버전 이름이 아닌 일관성 토큰을 기반으로 합니다.
DB2 패키지를 작성하지 않고 DBRM 파일을 생성하는 pureQuery StaticBinder 유틸리티를 사용하려는 경우, package-name-stem은 대문자여야하며 최대 7자이어야 합니다. StaticBinder 유틸리티를 사용하여 DBRM 파일 및 package-name-stem을 생성하고 분리 레벨로 추가된 문자가 7자를 초과하면, StaticBinder 유틸리티가 예외로 처리합니다.
패키지 이름은 단일 데이터베이스 내에서 고유해야 하므로 둘 이상의 인터페이스 파일에 대해 하나의 루트 패키지 이름을 지정할 수 없습니다. 정확히 하나의 인터페이스를 지정하면 명령행에 루트 패키지 이름을 지정할 수 있습니다. 또한, defaultOptions 행의 일부가 아닌 옵션 파일의 인터페이스에 대해 루트 패키지 이름을 지정할 수 있습니다.
이 옵션은 -rootPkgPattern 옵션과 함께 지정할 수 없습니다.
이 옵션을 -rootPkgExclusion 옵션과 함께 지정하여 StaticBinder 유틸리티가 작성하는 DB2 패키지 이름을 제어할 수 있습니다.
Java 패키지 이름으로 루트 패키지 이름을 구성하는 경우 마침표 문자 구분 기호가 밑줄 문자로 대체됩니다.
Java 패키지 경로에 인터페이스 이름을 더한 전체 길이가 데이터베이스 최대값 보다 크거나 작을 경우 오류가 보고되고 해당 패키지의 바인드가 수행되지 않습니다.
인터페이스 이름이 com.acme.payroll.report.monthly.CommissionData인 경우를 가정하여 다음 표에 -rootPkgPattern 옵션 값에 대해 생성되는 루트 패키지 이름이 나열되어 있습니다.
-rootPkgPattern 옵션 값 | 구성된 DB2 루트 패키지 이름 |
---|---|
INTERFACE | CommissionData |
INTERFACE_JAVAPKG | CommissionData_com_acme_payroll_report_monthly |
JAVAPKG_INTERFACE | com_acme_payroll_report_monthly_CommissionData |
-rootPkgExclusion="com.acme 옵션을 사용하여 지정된 JAVAPKG_INTERFACE | payroll_report_monthly_CommissionData |
package_prefix는 Java 패키지 이름의 첫 번째 파트를 표시하는 점 구분 이름을 지정합니다.
예를 들어, 프로젝트의 모든 Java 패키지 이름이 com.acme로 시작되는 경우 이 옵션을 사용하여 생성된 패키지 이름에서 중복되는 부분을 제거할 수 있습니다. 생성 시 Java 패키지 이름이 지정된 문자열로 시작하지 않을 경우 유틸리티는 전체 Java 패키지 이름을 사용합니다.
예를 들어, Java 인터페이스 이름이 com.acme.payroll.report.monthly.CommissionData이고 -rootPkgExclusion="com.acme" 옵션을 지정하는 경우 DB2 루트 패키지 이름 작성 시 com.acme 문자열이 제외됩니다.
예를 들어, 디렉토리는 C:\user\app1\일 수 있습니다. 해당 디렉토리는 C:\user\app1\com\myCompany\와 같은 Java 패키지에 해당되는 디렉토리일 수 있습니다.
생성 프로그램 유틸리티의 -interface 옵션으로, 유틸리티가 처리할 인터페이스의 이름을 지정하며, com.myCompany.MyInterface의 예에서처럼 패키지의 이름으로 이름을 지정합니다.
인터페이스를 컴파일할 수 있어야 합니다.
생성 프로그램 유틸리티가 해당 인터페이스와 같은 디렉토리에 구현 클래스를 생성합니다. 그러므로 각 구현 클래스가 인터페이스와 같은 Java 패키지에 작성됩니다.
C:\user\app1\로 설정된 -rootPath 및 com.myCompany.MyInterface로 설정된 -interface로 pureQuery Generator 유틸리티를 실행하면, 유틸리티는 C:\user\app1\com\myCompany\ 디렉토리에 MyInterfaceImpl.java 클래스를 생성합니다. 클래스의 완전한 이름은 com.myCompany.MyInterfaceImpl입니다.
-rootPath 옵션을 사용하지 않으면 pureQuery Generator 유틸리티는 현재 작업 디렉토리를 사용합니다.
>>-+------------------------+--+---------------------------+--->< '- -traceFile--file-name-' | .-OFF-----. | '- -traceLevel--+-ALL-----+-' +-SEVERE--+ +-WARNING-+ +-INFO----+ +-CONFIG--+ +-FINE----+ +-FINER---+ '-FINEST--'