Introducción a SQLJ

SQLJ le permite incorporar sentencias SQL en programas Java. SQLJ es un estándar ANSI desarrollado por un consorcio de los principales proveedores de software de servidor de aplicaciones y base de datos, incluidos IBM Corporation, Microsoft Corporation, Sun Microsystems y Oracle.

El conversor de SQLJ convierte un archivo de origen SQLJ en un archivo de origen Java estándar, y un perfil SQLJ serializado que incluye información sobre SQL estático en el origen de SQLJ. El conversor convierte cláusulas SQLJ en sentencias Java estándar mediante la sustitución de sentencias SQL incorporadas por llamadas a la biblioteca de tiempo de ejecución de SQLJ. Un script de personalización de SQLJ vincula el perfil SQLJ con la base de datos, lo que produce uno o varios paquetes de bases de datos. El archivo Java se compila y se ejecuta (con los paquetes) en la base de datos. El entorno de tiempo de ejecución de SQLJ consta de una biblioteca de tiempo de ejecución de SQLJ que se implementa en Java puro. La biblioteca de tiempo de ejecución de SQLJ llama al controlador JDBC de la base de datos destino, por ejemplo DB2.

Puede utilizar SQLJ en el entorno de trabajo para crear aplicaciones que se ejecuten con cualquier base de datos que admita SQLJ (por ejemplo, DB2 u Oracle). La función incorporada de personalización solamente funcina con DB2.

El área de trabajo tiene las siguientes características de SQLJ:

SQLJ y JDBC

A pesar de que tanto SQLJ como JDBC proporcionan aplicaciones Java que pueden acceder a bases de datos relacionales, se diferencian en varios aspectos:

SQL dinámico en comparación con SQL estático

Por lo general, el SQL dinámico es más flexible que el SQL estático, ya que no requiere la creación de sentencias SQL por adelantado. El SQL estático es más eficaz porque la base de datos ya ha hecho gran parte del trabajo necesario para ejecutar las sentencias SQL antes del tiempo de ejecución.

El SQL dinámico proporciona la posibilidad de consultar y actualizar tablas cuando, por ejemplo, no sabe el número y los tipos de columnas hasta el tiempo de ejecución. Con SQL dinámico en JDBC, un programa Java puede crear sentencias SQL en el tiempo de ejecución.

Con SQL dinámico, la autorización y el acceso a la base de datos se determinan en el tiempo de ejecución. El usuario de la aplicación debe tener todos los privilegios necesarios de la base de datos, y la base de datos debe determinar la mejor manera de acceder a los datos necesarios en el tiempo de ejecución. Sin embargo, con SQL estático, el acceso y la autorización se determinan en el momento de realizar la personalización y la vinculación. Los privilegios del usuario que realiza el proceso de vinculación determinan qué puede hacer la aplicación. La base de datos determina la mejor manera de acceder a los datos durante la personalización y la vinculación, lo que aumenta el rendimiento del tiempo de ejecución.

Muchas aplicaciones no necesitan crear sentencias SQL de forma dinámica, ya que los metadatos de la base de datos (como, por ejemplo, los nombres de tabla y de columna) no cambian en el tiempo de ejecución. Estas aplicaciones puede utilizar SQL estático, que tiene un rendimiento mejor que el SQL dinámico.

Ventajas de SQLJ

Además de obtener un mejor rendimiento con SQL estático, SQLJ tiene las siguientes ventajas sobre JDBC:

JDBC puede ejecutar sentencias SQL dinámicas, y SQLJ no puede. Sin embargo, si una aplicación necesita utilizar SQL dinámico, puede incluir código JDBC en el programa con cláusulas SQLJ.

Sintaxis de SQLJ

Las cláusulas SQLJ están incorporadas en código Java. Todas las cláusulas van precedidas del símbolo #sql. La siguiente cláusula SQLJ es un ejemplo de una sentencia SELECT con una variable Java en la cláusula WHERE:

#sql [ctx] cursor1 = {SELECT EMP_ACT.EMPNO FROM EMP_ACT WHERE
EMP_ACT.PROJNO = :strProjNo};

SQLJ en DB2

El soporte de SQLJ de DB2 se basa en el estándar ANSI SQLJ. Los tipos siguientes de construcciones SQL pueden aparecer en programas SQLJ:

Conceptos relacionados
Rendimiento de la aplicación con SQLJ
Proyectos Java habilitados para SQLJ y archivos SQLJ
SQLJ en DB2
Tareas relacionadas
Creación de archivos SQLJ
Referencia relacionada
Sintaxis de la sentencia SQLJ
Restricciones SQLJ para DB2

Comentarios