|Oracle8i SQLJ Developer's Guide and Reference
SQLJ allows applications programmers to embed static SQL operations in Java code in a way that is compatible with the Java design philosophy. A SQLJ program is a Java program containing embedded static SQL statements that comply with the ANSI-standard SQLJ Language Reference syntax; static SQL operations are predefined. The operations themselves do not change in real-time as a user runs the application, although the data values transmitted can change dynamically. Typical applications contain much more static SQL than dynamic SQL; dynamic SQL operations are not predefined. The operations themselves can change in real-time and require direct use of JDBC statements. Note, however, that you can use SQLJ statements and JDBC statements in the same program.
SQLJ consists of both a translator and a runtime component and is smoothly integrated into your development environment. The translator is run by the developer, with translation, compilation, and customization taking place transparently. Translation replaces embedded SQL with calls to the SQLJ runtime, which implements the SQL operations. In standard SQLJ this is typically, but not necessarily, done through calls to a JDBC driver. In the case of an Oracle database, you would typically use an Oracle JDBC driver. When the end user runs the SQLJ application, the runtime is invoked to handle the SQL operations in real-time.
The Oracle SQLJ translator is conceptually similar to other Oracle precompilers and allows the developer to check SQL syntax, compare SQL operations to what is available in the schema, and check the compatibility of Java types with corresponding database types. In this way, errors can be caught by the developer instead of by a user at runtime. The translator performs the following checks:
The SQLJ methodology of embedding SQL operations directly in Java code is much more convenient and concise than the JDBC methodology. In this way, SQLJ reduces development and maintenance costs in Java programs that require database connectivity. When dynamic SQL is required, however, SQLJ supports interoperability with JDBC such that you can intermix SQLJ code and JDBC code in the same source file.
For Oracle developers, it is also noteworthy that Oracle SQLJ can interoperate with PL/SQL, allowing anonymous PL/SQL blocks within SQLJ statements, and providing a syntax for calling PL/SQL stored procedures and functions.