La biblioteca de Data Access Accelerator

Puede utilizar los métodos de la biblioteca DAA (Data Access Accelerator) para mejorar el rendimiento cuando el código Java™ manipula datos nativos.

Para obtener una visión general de esta biblioteca, consulte Operaciones de datos nativos.

Para obtener información sobre las clases disponibles, consulte la documentación de la API.

Ejemplo: convertir un decimal empaquetado en un objeto BigDecimal

En este ejemplo, un decimal empaquetado firmado de 100 dígitos (sin incluir el signo), se almacena en una matriz de bytes denominada pdarray.

Código normal:
...
String pdsb = new StringBuffer();
int precision = 100;
if (isNegative(pdarray, precision))
    pdsb.append('-');
for (int i = 0; i < precision; ++i)
    pdsb.append(getDigit(pdarray, i) + '0');
return new BigDecimal(pdsb.toString());
...
Código equivalente, que utiliza la API de DAA:
...
return com.ibm.dataaccess.DecimalData.convertPackedDecimalToBigDecimal(pdarray, 0, precision, 0, false);
...

Ejemplo: Adición de dos tipos de decimal empaquetado

En este ejemplo, se añaden dos decimales empaquetados, pdarray1 y pdarray2 y se devuelve el resultado pdarrayResult. Los decimales empaquetados y el resultado se almacenan en forma de matrices de bytes. La precisión (el número de dígitos decimales en el valor decimal, sin incluir el signo) de las dos matrices iniciales es 100.

Sin el uso de la API de Data Access Accelerator, debe escribir sus propios métodos para convertir entre los formatos decimal empaquetado y BigDecimal (por ejemplo, utilizando un objeto String intermedio):
...
BigDecimal operand1 = myPackedDecimalToBigDecimalMethod(pdarray1, 100);
BigDecimal operand2 = myPackedDecimalToBigDecimalMethod(pdarray2, 100);

BigDecimal result = operand1.add(operand2);
myBigDecimalToPackedDecimalMethod(result, pdarrayResult);
return pdarrayResult;
...
Código equivalente, que utiliza la API de DAA. La precisión del resultado es 1 mayor que la precisión de los dos decimales iniciales. Todos los decimales empaquetados tienen un desplazamiento (donde empieza el decimal empaquetado) de 0:
...
com.ibm.dataaccess.DecimalData.addPackedDecimal(pdrrayResult, 0, 101, pdarray1, 0, 100, pdarray2, 0, 100, false);
return pdarrayResult;
...