Uso de Java para ejecutar SQL dinámico y estático
Db2 for z/OS® da soporte a SQLJ y JDBC. En general, las aplicaciones Java™ utilizan SQLJ para SQL estático, JDBC para SQL dinámico y PureQuery para SQL tanto estático como dinámico.
Al utilizar el lenguaje de programación Java, obtendrá las siguientes ventajas clave:
- Puede escribir una aplicación en cualquier plataforma habilitada para Java y ejecutarla en cualquier plataforma a la que se haya exportado el kit de desarrollo de Java (JDK).
- Puede desarrollar una aplicación una vez y ejecutarla en cualquier lugar,
lo cual proporciona las siguientes ventajas potenciales:
- Costes de desarrollo reducidos
- Costes de mantenimiento reducidos
- Costes de gestiones de sistemas reducidos
- Flexibilidad en el soporte de diversas configuraciones de hardware y software
La tabla siguiente muestra algunas de las principales diferencias entre SQLJ y JDBC.
| Características de SQLJ | Características de JDBC |
|---|---|
| SQLJ sigue el modelo de SQL estático y proporciona ventajas de rendimiento en comparación con JDBC. | JDBC sigue el modelo de SQL dinámico. |
| Los programas fuente SQLJ son más pequeños que los programas JDBC equivalentes ya que SQLJ genera automáticamente un determinado código que los desarrolladores deben incluir en programas JDBC. | Los programas fuente JDBC son más grandes que los programas SQLJ equivalentes ya que SQLJ genera automáticamente un determinado código que el desarrollador debe incluir en programas JDBC. |
| SQLJ comprueba los tipos de datos durante el proceso de preparación del programa y aplica una tipificación fuerte entre las columnas de la tabla y las expresiones del host Java. | JDBC pasa valores hacia y desde tablas de SQL sin seleccionar tipos de datos durante la compilación. |
| En los programas SQLJ, puede incrustar expresiones Java host en sentencias SQL. | JDBC requiere una sentencia separada para cada variable de vinculación y especifica la vinculación por número de posición. |
| SQLJ proporciona las ventajas de la selección de autorización de SQL estático. En SQLJ, el ID de autorización bajo el que se ejecutan las sentencias de SQL es el propietario del plan o paquete. Db2 comprueba los privilegios de la tabla en el momento de la vinculación. | Debido a que JDBC utiliza SQL dinámico, el ID de autorización bajo el que se ejecutan las sentencias de SQL no se conoce hasta el tiempo de ejecución, por lo tanto no se puede producir ninguna selección de autorización de privilegios de tabla hasta el tiempo de ejecución. |