JDBCCallableStatementReaderPattern
Este patrón se utiliza para implementar la lógica empresarial de procesar datos procedente de una conexión de Java™ Database Connectivity (JDBC) utilizando un procedimiento almacenado. La tarea administrativa de abrir y cerrar la conexión es realizada por la infraestructura por lotes.
Clases de soporte
- JDBCCallableStatementReader
Esta clase es referenciada cuando el patrón de uso de la secuencia de entrada de JDBC recupera un único resultado de una consulta. La consulta y los resultados se descartan después de cada iteración del paso. Esta clase es distinta de JDBCReader puesto que utiliza una sentencia a la que puede llamarse en lugar de una sentencia preparada.
- LocalJDBCCallableStatementReader
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 | JDBCCallableStatementReader | LocalJDBCCallableStatementReader |
---|---|---|---|
PATTERN_IMPL_CLASS | La clase que implementa la interfaz JDBCCallableStatementReaderPattern. | Aplicable | Aplicable |
ds_jndi_name | El nombre de JNDI del origen de datos. | Aplicable | Aplicable |
jdbc_url | El URL de JDBC. Por ejemplo, jdbc:derby:C:\\mysample\\CREDITREPORT. | No aplicable | Aplicable |
jdbc_driver | El controlador JDBC. Por ejemplo, org.apache.derby.jdbc.EmbeddedDriver | No aplicable | Aplicable |
userid | El ID de usuario de la base de datos. | No aplicable | Aplicable |
pswd | Contraseña del usuario. | No aplicable | Aplicable |
Propiedades opcionales
Para el patrón las propiedades siguientes son opcionales.
Nombre de propiedad | Value | Descripción | JDBCCallableStatementReader | LocalJDBCCallableStatementReader |
---|---|---|---|---|
CursorHoldabilityEnabled | true o false (el valor predeterminado es false) | Habilita la retención del cursor para este lector de BDS | Aplicable | Aplicable |
debug | true o false. El valor predeterminado es false. | Habilita el rastreo detallado en esta secuencia de datos por lotes. | 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 |
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 |
Definición de interfaz
public interface JDBCCallableStatementReaderPattern {
/**
* 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 valores para las diversas columnas de la fila actual del
* objeto resultset especificado. Normalmente, estos datos se emplearán para llenar un
* objeto intermedio que será devuelto
* @parámetro resultSet
* @return
*/
public Object fetchRecord(ResultSet resultSet);
/**
* Este método debe dar como resultado un ResultSet utilizando por la secuencia para recuperar todos los datos
* relevantes que podrían procesarse como parte de los pasos del trabajo.
*/
public ResultSet getResultSet(CallableStatement cstmt) throws SQLException ;
/**
* Este método debe devolver una consulta Callable que se empleará durante la configuración de la
* corriente para recuperar todos los datos relevantes que serían procesados como parte de los pasos de trabajo.
* @return object que utilizar durante el paso process.
*/
public CallableStatement getInitialCallableStatement(Connection con);
/**
* Este método se llama durante el reinicio del trabajo. Debe utilizarse la señal de reinicio para crear
* una consulta SQL que recuperará registros no procesados anteriormente.
* Normalmente la señal de reinicio sería 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 CallableStatement getRestartCallableStatement(Connection con,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 de xJCL de JDBCCallableStatementReader
<batch-data-streams>
<bds>
<logical-name>inputStream</logical-name>
<props>
<prop name="IMPLCLASS" value="com.ibm.websphere.batch.samples.tests.bds.EchoReader"/>
<prop name="ds_jndi_name" value="jdbc/echojndi"/>
<prop name="debug" value="false"/>
<prop name="EnablePerformanceMeasurement" value="true"/>
</props>
<impl-class>com.ibm.websphere.batch.devframework.datastreams.patterns.JDBCCallableStatementReader</impl-class>
</bds>
</batch-data-streams>