JDBCReaderPattern
Este patrón se utiliza para recuperar datos de una base de datos utilizando una conexión JDBC (Java™ Database Connectivity).
Clases de soporte
- CursorHoldableJDBCReaderSe hace referencia a esta clase cuando el patrón de uso de la corriente de entrada JDBC recupera un conjunto de resultados al principio del paso y, a continuación, los repite durante toda la lógica de proceso de pasos. CursorHoldableJDBCReader utiliza un bean de sesión con estado con un origen de datos no XA que puede mantenerse con un cursor. Un JDBCReader que puede mantenerse con un cursor es un patrón que se implementa de forma que el cursor no se pierde cuando se confirma la transacción. As Por consiguiente, no es necesario volver a llenar ResultSets después de cada punto de control, lo que mejora el rendimiento. Para utilizar CursorHoldableJDBCReader, empaquete CursorHoldableSessionBean en la aplicación. Para crear el paquete, añada la propiedad nonxadsjndiname=nombre_jndi_de_un_origen_datos_no_XA_a_base_datos al archivo de propiedades que utiliza BatchPackager. Por ejemplo, nonxadsjndiname=jdbc/nonxads. Si desea añadir varios orígenes de datos no XA, especifique lo siguiente: nonxadsjndiname=<nombre jndi1>;<nombre jndi2>...Restricción: Actualmente, el nombre de referencia de recurso del origen de datos JDBC es el mismo que el nombre JNDI (Java Naming and Directory Interface).
- JDBCReader
Se hace referencia a esta clase cuando el patrón de uso de la corriente de entrada recupera un solo resultado de una consulta, que se utiliza y descarta después de cada iteración del paso.
- LocalJDBCReader
Se hace referencia a esta clase cuando se leen datos de una base de datos local.
Propiedades obligatorias
Las propiedades siguientes son necesarias para el patrón.
Propiedad | Value | LocalJDBCReader | CursorHoldableJDBCReader | JDBCReader |
---|---|---|---|---|
PATTERN_IMPL_CLASS | Clase que implementa la interfaz JDBCReaderPattern | Aplicable | Aplicable | Aplicable |
ds_jndi_name | Nombre JNDI del origen de datos. | Aplicable | No aplicable | Aplicable |
jdbc_url | El URL de JDBC. Por ejemplo, jdbc:derby:C:\\mysample\\CREDITREPORT. | Aplicable | No aplicable | No aplicable |
jdbc_driver | El controlador JDBC. Por ejemplo, org.apache.derby.jdbc.EmbeddedDriver | Aplicable | No aplicable | No aplicable |
userid | El ID de usuario de la base de datos. Por ejemplo, Myid | Aplicable | No aplicable | No aplicable |
pswd | Contraseña de usuario. Por ejemplo, mypwd. Sólo LocalJDBCReader. | Aplicable | No aplicable | No aplicable |
Propiedades opcionales
Para el patrón las propiedades siguientes son opcionales.
Nombre de propiedad | Value | Descripción | LocalJDBCReader | CursorHoldableJDCReader | JDBCReader |
---|---|---|---|---|---|
CursorHoldabilityEnabled | true o false (el valor predeterminado es false) | Habilita la retención del cursor para este lector de BDS | Aplicable | Aplicable | Aplicable |
debug | true o false (el valor predeterminado es false) | Habilita el rastreo detallado en esta secuencia de datos por lotes. | Aplicable | Aplicable | Aplicable |
EnablePerformanceMeasurement | true o false (el valor predeterminado es false) | Calcula el tiempo total invertido en las secuencias de datos por lotes y el método processRecord, si se utiliza GenericXDBatchStep. | Aplicable | Aplicable | Aplicable |
EnableDetailedPerformanceMeasurement | true o false (el valor predeterminado es false) | Proporciona un desglose más detallado del tiempo invertido en cada método de las secuencias de datos por lotes. | Aplicable | Aplicable | Aplicable |
Definición de interfaz
public interface JDBCReaderPattern {
/**
* Este método se invoca durante la fase de configuración de trabajo.
*
* @parámetro props Propiedades proporcionadas en el xJCL
*/
public void initialize(Properties props);
/**
* Este método debe recuperar del objeto resultset dado los valores para las diversas columnas de la
* fila actual. Normalmente estos datos se emplearán para llenar un objeto intermedio que se devolverá.
* @parámetro resultSet
* @return
*/
public Object fetchRecord(ResultSet resultSet);
/**
* Este método debe devolver una consulta SQL que se empleará durante la configuración de la
* secuencia para recuperar todos los datos relevantes que se procesarán durante los pasos de trabajo
* @return object que utilizar durante el paso process.
*/
public String getInitialLookupQuery();
/**
* Este método se llama durante el reinicio del trabajo. La señal de reinicio debe utilizarse para crear una consulta SQL
* que recuperará registros no procesados anteriormente. Normalmente, la señal de reinicio será
* la clave primaria en la tabla y la consulta obtendrá
todas las filas con el valor de clave primaria > restarttoken
* @parámetro restartToken
* @devuelve La consulta de reinicio
*/
public String getRestartQuery(String restartToken);
/**
* Este método se invoca justo antes de tomarse un punto de control.
* @devuelve El método debe devolver un valor de serie que identifique el último registro leído por la secuencia.
*/
public String getRestartTokens();
}
Ejemplo xJCL CursorHoldableJDBCReader
<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>
Ejemplo xJCL LocalJDBCReader
<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>