JDBCReaderPattern
이 패턴은 JDBC(Java™ Database Connectivity) 연결을 사용하여 데이터베이스에서 데이터를 검색하는 데 사용됩니다.
클래스 지원
- CursorHoldableJDBCReaderJDBC 입력 스트림의 사용 패턴이 단계 시작에서 결과 세트를 검색한 다음 step-processing 로직을 통해 반복하는 경우 이 클래스가 참조됩니다. CursorHoldableJDBCReader는 커서 홀드 가능, 비-XA 데이터 소스가 있는 stateful 세션 Bean을 사용합니다. 커서 홀드 가능 JDBCReader는 트랜잭션이 커미트될 때 커서가 유실되지 않는 방식으로 구현되는 패턴입니다. 결과적으로 ResultSets는 모든 체크포인트 다음에 다시 채우지 않아도 되며, 성능이 개선됩니다. CursorHoldableJDBCReader를 사용하려면 사용자 애플리케이션에서 CursorHoldableSessionBean을 패키지하십시오. 패키지를 작성하려면 nonxadsjndiname=jndi_name_of_a_non-XA_data_source_to_database 특성을 BatchPackager에서 사용되는 특성에 추가합니다. 예를 들어, nonxadsjndiname=jdbc/nonxads입니다. 여러 비-XA 데이터 소스를 추가하려는 경우 다음을 입력하십시오. nonxadsjndiname=<jndi name1>;<jndi name2>...제한사항: 현재, JDBC 데이터 소스의 자원 참조 이름은 JNDI(Java Naming and Directory Interface) 이름과 동일합니다.
- JDBCReader
JDBC 입력 스트림의 사용 패턴이 조회에서 단일 결과를 검색하면 이 클래스가 조회에서 참조되며, 단계의 모든 반복 후에 사용되고 버려집니다.
- LocalJDBCReader
데이터가 로컬 데이터베이스에서 읽히면 이 클래스가 참조됩니다.
필수 특성
다음 특성은 패턴에 필요합니다.
특성 | 값 | LocalJDBCReader | CursorHoldableJDBCReader | JDBCReader |
---|---|---|---|---|
PATTERN_IMPL_CLASS | JDBCReaderPattern 인터페이스를 구현하는 클래스 | 적용 가능 | 적용 가능 | 적용 가능 |
ds_jndi_name | 데이터 소스 JNDI 이름 | 적용 가능 | 적용 불가능 | 적용 가능 |
jdbc_url | JDBC URL. 예를 들어, jdbc:derby:C:\\mysample\\CREDITREPORT입니다. | 적용 가능 | 적용 불가능 | 적용 불가능 |
jdbc_driver | JDBC 드라이버. 예를 들어, org.apache.derby.jdbc.EmbeddedDriver입니다. | 적용 가능 | 적용 불가능 | 적용 불가능 |
userid | 데이터베이스의 사용자 ID. 예를 들어, Myid입니다. | 적용 가능 | 적용 불가능 | 적용 불가능 |
pswd | 사용자 비밀번호. 예를 들어, mypwd입니다. LocalJDBCReader 전용입니다. | 적용 가능 | 적용 불가능 | 적용 불가능 |
선택적 특성
다음 특성은 패턴에 대해 선택사항입니다.
특성 이름 | 값 | 설명 | LocalJDBCReader | CursorHoldableJDCReader | JDBCReader |
---|---|---|---|---|---|
CursorHoldabilityEnabled | true 또는 false(기본값은 false) | 이 BDS 리더에 대한 커서 홀드 기능을 사용합니다. | 적용 가능 | 적용 가능 | 적용 가능 |
디버그 | true 또는 false(기본값은 false) | 이 일괄처리 데이터 스트림에 대한 자세한 추적을 사용으로 설정합니다. | 적용 가능 | 적용 가능 | 적용 가능 |
EnablePerformanceMeasurement | true 또는 false(기본값은 false) | GenericXDBatchStep을 사용 중인 경우, 일괄처리 데이터 스트림과 processRecord 메소드에서 소요된 전체 시간을 계산합니다. | 적용 가능 | 적용 가능 | 적용 가능 |
EnableDetailedPerformanceMeasurement | true 또는 false(기본값은 false) | 일괄처리 데이터 스트림의 각 메소드에서 소요된 시간의 자세한 추가 분석을 제공합니다. | 적용 가능 | 적용 가능 | 적용 가능 |
인터페이스 정의
public interface JDBCReaderPattern {
/**
* This method is invoked during the job setup phase.
*
* @param props properties provided in the xJCL
*/
public void initialize(Properties props);
/**
* This method should retrieve values for the various columns for the current row from the given resultset
* object. Typically this data would be used to populate an intermediate object which would be returned
* @param resultSet
* @return
*/
public Object fetchRecord(ResultSet resultSet);
/**
* This method should return a SQL query that will be used during setup of the stream to retrieve all
* relevant data that would be processed part of the job steps
* @return object to be used during process step.
*/
public String getInitialLookupQuery();
/**
* This method gets called during Job Restart. The restart token should be used to create an SQL query
* that will retrieve previously unprocessed records. Typically the restart token would be the primary
* key in the table and the query would get all rows with
* primary key value > restarttoken
* @param restartToken
* @return The restart query
*/
public String getRestartQuery(String restartToken);
/**
* This method gets called just before a checkpoint is taken.
* @return The method should return a string value identifying the last record read by the stream.
*/
public String getRestartTokens();
}
CursorHoldableJDBCReader xJCL 예
<batch-data-streams>
<bds>
<logical-name>inputStream</logical-name>
<props>
<prop name="PATTERN_IMPL_CLASS" value="com.ibm.websphere.batch.samples.tests.bds.EchoReader"/>
<prop name="ds_jndi_name" value="jdbc/fvtdb"/>
<prop name="debug" value="true"/>
<prop name="DEFAULT_APPLICATION_NAME" value="XDCGIVT"/>
</props>
<impl-class>com.ibm.websphere.batch.devframework.datastreams.patterns.CursorHoldableJDBCReader</impl-class>
</bds>
</batch-data-streams>
LocalJDBCReader xJCL 예
<batch-data-streams>
<bds>
<logical-name>inputStream</logical-name>
<props>
<prop name="PATTERN_IMPL_CLASS" value="com.ibm.websphere.batch.samples.tests.bds.EchoReader"/>
<prop name="jdbc_url" value="jdbc:derby:C:\\mysample\\CREDITREPORT"/>
<prop name="jdbc_driver" value="org.apache.derby.jdbc.EmbeddedDriver"/>
<prop name="user_id" value="myuserid"/>
<prop name="pswd" value="mypswd"/>
<prop name="debug" value="true"/>
</props>
<impl-class>com.ibm.websphere.batch.devframework.datastreams.patterns.LocalJDBCReader</impl-class>
</bds>
</batch-data-streams>