Часть I
Основы Oracle9i SQLJ
1 Введение в Oracle?! SQLJ
Связь языка Java с обработкой информации баз данных
в Интернете
Тесная интеграция Java с сервером баз данных Oracle9i
Oracle Java VM - обзор
Основные компоненты Oracle JVM
Модель статического и динамического встраивания SQL
в Java -SQLJ
Динамический SQL
Статически встраиваемый SQL
Обзор SQLJ
Сравнение SQLJ и JDBC
Внедрение SQLJ в толстых и тонких клиентских
и серверных приложениях
Толстые клиентские приложения
Серверные приложения
Сравнение SQLJ с другими языками встраивания
SQL-конструкций типа PL/SQL и Рго*С
2 Разработка программ SQLJ
Исполнение SQL-операторов отличных от оператора SELECT
в SQLJ-программе
Подключение к базе данных
Исполняемые SQLJ-операторы не возвращающие результаты
SQLJ-программа загрузки - LoadAccountListsqlj
Трансляция и исполнение программы LoadAccountListsqlj
Исполнение операторов SELECT
в SQLJ-программе при помощи именованных итераторов
Обработка именованных итераторов
SQLJ-программа считывания использующая именованный
итератор - AcctsForProjssqlj
Исполнение операторов SELECT
в SQLJ-программах при помощи позиционных итераторов
Различия между именованными и позиционными итераторами
SQLJ-программа считывания использующая позиционный
итератор - AcctsForProjs2sqlj
Процесс SQLJ-трансляции
Параметры командной строки sqlj и файлы свойств
Параметры командной строки sqlj
Указание SQU-параметров при помощи файлов свойств
3 Основы программирования на SQLJ
Исполняемые SQLJ-операторы без результирующих
выражений - SQLJ-команды DDL и SQLJ-команды DML
не являющиеся операторами SELECT
SQLJ-команды DDL
SQLJ-команды DML
Исполняемые SQLJ-операторы без результирующих
выражений - SQLJ-команды управления транзакциями
Оператор SET TRANSACTION
Исполняемые SQLJ-операторы без результирующих выражений -
анонимные PL/SQL-блоки и вызовы хранимых процедур
Анонимные PL/SQL-блоки
Вызовы хранимых процедур
Исполняемые SQLJ-операторы без результирующих
выражений - операторы SET FETCH и SELECT INTO
Оператор SET
Оператор SELECT INTO
Оператор FETCH
Метод endFetch()
Исполняемые SQLJ-операторы
с результирующими выражениями - SQLJ-операторы SELECT
Синтаксис объявления итератора
Синтаксис конструкций запросов
SQLJ-программа
считывания - UsingNamedAndPositionalltersqlj
Заполнение итератора выходными данными вложенного курсора
Поддержка типов REF CURSOR в SQLJ
Исполняемые SQLJ-операторы с результирующими
выражениями - вызовы хранимых функций
Классы исключительных ситуаций JDBC и SQLJ
Другие полезные классы JDBC и SQLJ
Часть II
Конструкции SQLJ для обработки реляционных данных
4 Разработка хранимых подпрограмм и триггеров SQLJ
Разработка хранимых подпрограмм SQLJ на стороне клиента
Обзор серверных JDBC-драйверов Oracle
Вопросы SQLJ-программирования серверных приложений
Emplnsertsqlj - пример серверного приложения
Трансляция исходных SQLJ-файлов на стороне клиента
Загрузка классов и ресурсов на сервер
Проверка загрузки схемных объектов на сервер
Создание спецификаций вызовов хранимых процедур
при помощи PL/SQL
FuncTestsqlj - простое приложение вызывающее
хранимую подпрограмму
Итоги этапов разработки
Создание спецификаций вызовов в PL/SQL-модулях
Вызов хранимых подпрограмм SQLJ
в SQL-операторах и PL/SQL-блоках
Вызов хранимых подпрограмм в PL/SQL-блоках
Вызов хранимых функций в SQL-командах DML
Вызов хранимых процедур
при помощи SQL-оператора CALL
Загрузка и трансляция исходных SQLJ-файлов
на сервере Oracle8i/9i
Параметры серверного транслятора
Установка параметров серверного транслятора
Выходные данные генерируемые серверным
транслятором и loadjava
Ошибочные выходные данные серверного транслятора
Утилита dropjava
Достоинства и недостатки реализации хранимых подпрограмм
на SQLJ по сравнению с их реализацией на PL/SQL
5 Расширенные возможности внедрения SQLJ
Проверка семантики контекста соединения
SQLJ-конструкция implements
SQLJ-конструкция with
Поддержка DataSource
Связь контекста исполнения с контекстом соединения
в исполняемом SQLJ-операторе
Использование SQLJ-класса DefaultContext
Связь DataSource с DefaultContext
Программа UsingSqljDefaultContextsqlj
Управление соединениями с несколькими базами данных
с помощью SQLJ
Соединение для настройки
Внедрение SQLJ-приложения
Внедрение толстого клиента SQLJ
Внедрение SQLJ на прикладном сервере
(на сервере промежуточного уровня)
Внедрение тонкого клиента SQLJ
Внедрение SQLJ в Java-приложение
Внедрение SQLJ в Java-апплет
Внедрение SQLJ-апплета
Внедрение SQLJ на сервере данных Oracle8i/9i в виде
хранимых процедур SQLJ
Внедрение SQLJ в Oracle9i AS
Java-сервлеты использующие SQLJ-приложение
Страницы JavaServerPages (JSP) использующие
SQLJ-приложение
Использование DataSource в SQLJ-программах
6 Расширенные функциональные возможности SQLJ
Объявление и использование итераторов ResultSetlterator
Объявление и использование прокручиваемых
SQLJ-итераторов
Интерфейс Scrollable
Чувствительность прокручиваемых итераторов
Объявление и использование прокручиваемых именованных
итераторов
Объявление и использование прокручиваемых позиционных
итераторов
Объявление и использование итераторов
ScrollableResultSetlterator
Использование встроенного динамического SQL в SQLJ
Мета-выражения привязки
Использование Java-выражений привязки
Использование SQL-конструкций замены
Вычисление Java-выражения привязки на этапе трансляции
Вычисление Java-выражения привязки на этапе исполнения
Использование мета-выражений привязки
Ограничения мета-выражений привязки
7 Расширенные свойства SQLJ
Потоки SQLJ
Посылка данных в базу потоками
Сохранение файлов в базе данных
Считывание данных в базе потоками
Считывание файлов хранимых в базе данных
Большие объекты
Загрузка файлов в столбцы BLOB
Считывание данных в столбцах BLOB и запись их на диск
Использование Oracle-модуля DBMS_LOB в SQLJ
Использование BFILE в SQLJ
Многопоточная обработка
Многопоточная обработка и SQLJ
Многопоточная обработка и контексты исполнения
Многопоточная обработка в SQLJ-приложении
Взаимодействие SQLJ и JDBC
Преобразование JDBC-соединения в SQLJ-соединение
Преобразование SQLJ-соединения в JDBC-соединение
Совместное использование и закрытие соединений
Взаимосвязь SQLJ-итератора и результирующего набора JDBC
Преобразование результирующих наборов JDBC
в SQLJ-итераторы
Создание подклассов для классов SQLJ-итераторов
Часть III SQLJ и внедрение объектов
8Объектно-реляционная
обработка с использованием SQLJ
Пользовательские объектные SQL-типы Orac!e8i/9
Создание объектных типов и объектных таблиц
Операторы INSERT для объектных таблиц
Операторы SELECT И UPDATE для объектных таблиц
Обработка объектных SQL-типов в Oracle9i SQLJ
Создание специальных Java-классов
для пользовательских типов с помощью JPublisher
Отображение типов JPublisher
Методы специальных Java-классов
для объектных типов и ссылочных типов
ObjectTypessqlj - пример SQLJ-программы обрабатывающей
таблицы с пользовательскими объектными SQL-типами
Пользовательские SQL-типы сборных конструкций Oracle8i/9i
Обработка SQL-типов сборных конструкций в SQLJ
CollectionTypessqlj - пример SQLJ-программы
обрабатывающей таблицы с типами NESTED TABLE и VARRAY
Использование классов SQLData в SQLJ-программах
Запрос классов SQLData из JPublisher
9Внедрение бизнес- и научных объектов в SQLJ
Основные концепции распределенных вычислительных систем Проектирование и разработка компонентного SQLJ-объекта
Понятие компонента
Понятие компонентной модели
Разработка SQLJ-компонента
Внедрение SQLJ-компонента с помощью Java Remote
Method Invocation
Необходимость в распределенных объектных RMI-приложениях
Что такое RMI
Состав RMI-объекта
Разработка RMI-объекта
Внедрение объекта Enterprise JavaBeans
с помощью SQLJ-реализации
Что такое Enterprise JavaBeans
Роли Enterprise JavaBeans
Типы зерен EJB
Состав объекта Enterprise JavaBeans
Внедрения приложения сеансового EJB-зерна
Создание дескриптора внедрения с помощью XML
Java-сервлеты использующие EJB-зерна
Внедрение объекта CORBA с помощью SQLJ-реализации
Что такое CORBA
Состав CORBA-объекта Разработка CORBA-объекта
Часть IV
Эффективное использование SQLJ
10 SQLJ-приложения - оптимизация
производительности
Расширение класса ConnectionManager
Средства повышения эффективности работы с Oracle
Предварительное считывание строк с помощью SQLJ
Пакетное обновление
Кэширование операторов
Реализация надежного кэширования в SQLJ
Описание столбцов
Описание размеров параметров
Разработка эффективных SQLJ-программ
Настройка SQLJ-операторов с помощью оптимизатора Oracle
Другие способы снижения нагрузки на сеть
11 Инструментальные средства разработки Oracle?!
Краткий обзор инструментальных Интернет-средств
разработки Oracle
Инструментальное средство Oracle Designer
Oracle WebDB
Oracle JDeveloper
Разработка SQLJ-приложения при помощи JDeveloper
Создание нового рабочего пространства
Создание нового проекта
Добавление исходного SQLJ-файла в проект
Установка свойств проекта
Компиляция SQLJ-программы
Выполнение SQLJ-программы
Часть V
Приложения 481
12 Основы Oracle SQL
Реляционная модель баз данных SQL
SQL-команды DDL
SQL-команды DML
Операторы SELECT
Операторы INSERT SELECT DELETE и UPDATE
Команды управления транзакциями
Встроенный SQL
Пример программы со встроенным SQL
Курсоры
PL/SQL
Блок PL/SQL
Подпрограммы PL/ SQL
Модули и исключительные ситуации PL/SQL
13 Основы Java
Приложение Java
Переменные и типы данных
Массивы и строки символов
Операции и выражения
Операторы управления
Компиляция и исполнение
Классы и объекты Java
Создание и использование объектов
Создание и использование конструкторов
Использование ключевого слова this
Компоненты класса
Возвращаемые типы методов
Создание подклассов
Создание пакетов
Модификаторы доступа
Импорт классов и пакетов
Абстрактные классы
Интерфейсы
Знакомство с Java-апплетами
Краткий обзор Java-класса AWT
14 Введение в JDBC
Создание приложения JDBC
1. Импорт JDBC-пакета
2. Загрузка и регистрация JDBC-драйвера
3. Создание объекта Connection для подключения к базе данных
4. Создание экземпляра Statement для выполнения
различных действий в базе данных
5. Выполнение нужных действий в базе данных
с помощью экземпляра Statement
6. Использование JDBC-объекта ResultSet
7. Закрытие экземпляров Statement
8. Закрытие соединения с базой данных
Java-апппет вызывающий хранимую PL/SQL-процедуру
15 Краткий справочник по SQLJ
Установка среды SQLJ
Установка переменных среды CLASSPATH и PATH
Объявления SQLJ
Объявление итератора
Объявление контекста соединения
Конструкция implements
Конструкция with
Базовые выражения Java
Конструкция исполняемого оператора
SQU-конструкция
Однострочные результаты
запросов - конструкция SELECT INTO
Конструкция FETCH INTO
Конструкция FETCH CURRENT INTO
Конструкция FETCH PRIOR INTO
Конструкция FETCH FIRST INTO
Конструкция FETCH LAST INTO
Конструкции абсолютного и относительного перемещения
Синтаксис SET TRANSACTION
Конструкции COMMIT и ROLLBACK
Конструкция вызова процедуры
Конструкция вызова функции
Конструкция присваивания - SET
Блоки PL/SQL
Соединения с базами данных
Класс DefaultContext
Интерфейс ConnectionContext
Класс ExecutionContext
Файл свойств соединения
Поддержка динамического SQL в Oracle9i SQLJ
Мета-выражения привязки
Синтаксис мета-выражений привязки
Java-выражения привязки
SQL-конструкции замены
Некоторые классы sqljruntime
Класс sqljruntimerefDefaultContext
Класс sqljruntimeExecutionContext
Типы поддерживаемые для базовых выражений
Стандартные JDBC-типы и типы JDBC 20
Классы-оболочки Java
Oracle-расширения
Поддержка типов JDBC 20 в Oracle SQLJ
Поточные SQLJ-классы
Инструментальные средства
Инструмент SQLJ-транслятора - sqlj
Инструмент архивирования Java - jar
Инструмент JPublisher - jpub
Инструмент загрузки Java - loadjava
Инструмент удаления Java - dropjava
Инструмент Enterprise JavaBeans - deployejb
Инструмент ejbdescriptor
Инструмент пространства имен сеансов - publish