Oracle8i CORBA Developer's Guide and Reference Release 3 (8.1.7) Part Number A83722-01 |
Library | Service | Contents | Index

## Using SQLJ

You can often simplify the implementation of a CORBA server object by using Oracle8i SQLJ to perform static SQL operations. Using SQLJ statements results in less code than the equivalent JDBC calls and makes the implementation easier to understand and debug. This section describes a version of the example first shown in "A First CORBA Application", but uses SQLJ rather than JDBC for the database access. Refer to the Oracle8i SQLJ Developer's Guide and Reference for complete information about SQLJ.

The only code that changes for this SQLJ implementation is in the `EmployeeImpl.java` file, which implements the `Employee` object. The SQLJ implementation, which can be called `EmployeeImpl.sqlj`, is listed below. You can contrast that with the JDBC implementation of the same object in "Write the Server Object Implementation".

    package employeeServer;

    import employee.*;
    import java.sql.*;

    public class EmployeeImpl extends _EmployeeImplBase {
      public EmployeeInfo getEmployee (int ID) throws SQLError {
        try {
          String name = null;
          double salary = 0.0;
          #sql { select ename, sal into :name, :salary from emp
                 where empno = :ID };
          return new EmployeeInfo (name, empno, (float)salary);
        } catch (SQLException e) {
          throw new SQLError (e.getMessage ());
        }
      }
    }

The SQLJ version of this implementation is considerably shorter than the JDBC version. In general, Oracle recommends that you use SQLJ where you have static SQL commands to process, and use JDBC, or a combination of JDBC and SQLJ, in applications where dynamic SQL statements are required.

### Running the SQLJ Translator

To compile the `EmployeeImpl.sqlj` file, you issue the following SQLJ command:

    % sqlj -J-classpath
    .:$(ORACLE_HOME)/lib/aurora_client.jar:$(ORACLE_HOME)/jdbc/lib/classes111.zip:
    $(ORACLE_HOME)/sqlj/lib/translator.zip:$(ORACLE_HOME)/lib/vbjorb.jar:
    $(ORACLE_HOME)/lib/vbjapp.jar:$(JDK_HOME)/lib/classes.zip -ser2class
      employeeServer/EmployeeImpl.sqlj

This command does the following:

- translates the SQLJ code into a pure Java file

- compiles the resulting `.java` source to get a .`class` file

- the -`ser2class` option translates SER files to `.class` files

The SQLJ translation generates two additional class files:

    employeeServer/EmployeeImpl_SJProfile0
    employeeServer/EmployeeImpl_SJProfileKeys

which you must also load into the database when you execute the `loadjava` command.

### A Complete SQLJ Example

This example is available in complete form in the examples`/corba/basic` example directory, complete with a Makefile or Windows NT batch file so you can see how the example is compiled and loaded.

| Copyright © 1996-2000, Oracle Corporation. All Rights Reserved. |
Library | Service | Contents | Index