Oracle и Java: использование PL/SQL, JDBC, SQLJ

Программирование на Java под базы данных OracleДля написания приложений, нуждающихся в получении доступа к базе данных Oracle, можно использовать как язык PL/SQL, так и язык Java. Хотя PL/SQL и обладает некоторой объектно-ориентированной функциональностью, язык Java является хорошо известным объектно-ориентированным языком программирования. Если приложение нуждается в постоянном получении доступа к базе данных и обработке больших объемов данных, применение PL/SQL, пожалуй, будет более правильным вариантом. Для разработки открытых распределенных приложений больше подходит язык Java.


Оглавление статьи[Показать]


В состав базы данных Oracle входит механизм JVM (Java Virtual Machine — виртуальная машина Java), предназначенный для интерпретации Java-кода внутри базы данных. Точно так же, как PL/SQL позволяет сохранять код на сервере и использовать его множество раз, Java позволяет создавать хранимые процедуры и сохранять их в базе данных Oracle. Эти хранимые процедуры имеют вид классов Java. Доступными для механизма JVM в Oracle файлы Java делаются их загрузкой в базу данных Oracle в качестве объектов схемы.

Использовать язык Java в базе данных Oracle можно несколькими способами. Можно вызвать методы Java в классах, которые загружаются в базу данных в виде хранимых процедур Java. Вдобавок можно использовать два разных API-интерфейса — JDBC (Java Database Connectivity) или SQLJ — для получения доступа к базе данных Oracle из прикладной Java-программы. В следующих разделах приведено краткое описание всех этих способов работы с Java в базе данных Oracle.

 

Хранимые процедуры Java

Хранимые процедуры Java, естественно, пишутся на языка Java, и облегчают реализацию интенсивной по объемам данных бизнес-логики. Эти процедуры хранятся внутри базы данных, как и хранимые процедуры PL/SQL. Их можно считать связующим звеном между средами, в которых используются, и средами, в которых не используются Java-приложения.

Выполнять хранимые процедуры Java можно точно так же, как и хранимые процедуры PL/SQL. Для создания хранимой процедуры Java потребуется выполнить следующие шаги.

  1. Определите класс Java.
  2. Скомпилируйте новый класс с применением компилятора Java.
  3. Загрузите класс в базу данных Oracle с помощью работающей утилиты командной строки loadjava.
  4. Опубликуйте хранимую процедуру Java.

После выполнения этих шагов хранимую процедуру Java можно вызывать.

 

Интерфейс JDBC

Интерфейс JDBC является популярным методом подключения к базе данных Oracle из Java. Полный пример Java-программы приводился в главе 10. На самом деле JDBC представляет собой целый набор интерфейсов для выполнения запросов к базам данных и обработки SQL-данных на языке Java.

В листинге 1 ниже показана простая программа JDBC, предусматривающая установку соединения с базой данных Oracle и выполнение в ней простого SQL-запроса.


 

import java.sql.*;
public class JDBCExample {
public static void main(String args[]) throws SQLException
/* Объявление используемого типа драйвера Oracle */
{DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
/* Создание соединения с базой данных для программы JDBC */
Connection conn =
DriverManager.getConnection(
"jdbc:oracle:thin:@nicholas:1521:aparna","hr","hr");
Statement stmt = conn.createStatement();
/* Передача запроса SQL и сохранение результатов в результирующем наборе rs */
ResultSet rs =
stmt.executeQuery("select emp_id, emp_name,salary from employees");
/* Доступ к содержимому результирующего набора rs по строкам в цикле while */
while(rs.next()){
int number = rs.getInt(1);
String name= rs.getString(2);
System.out.println(number+" "+name+" "+salary);
}
/* Закрытие результирующего набора JDBC и соединения с базой данных */
rs.close();
conn.close();
}
}

JDBC идеально подходит для динамических SQL-запросов, в которых SQL-операторы остаются неизвестными вплоть до времени выполнения.

 

Интерфейс SQLJ

Интерфейс SQLJ представляет собой дополнительный API-интерфейс и идеально подходит для приложений, в которых используются статические SQL-запросы (SQL-запросы, в которых SQL-операторы известны еще до выполнения). Благодаря своей статической природе, SQLJ позволяет обеспечивать перехват ошибок до их возникновения во время выполнения. Следует иметь в виду, что даже в случае SQLJ для получения доступа к базе данных все равно используются драйверы JDBC.
Для выполнения программы SQLJ потребуется выполнить перечисленные ниже шаги.

  1. Создайте исходный код SQLJ.
  2. Преобразуйте исходный код SQLJ в исходный код Java с помощью компилятора Java.
  3. Запустите исполняемую программу SQLJ после подключения к базе данных.

В листинге 2 приведен простой пример программы SQLJ, который показывает, как выполнять SQL-оператор из Java.


 

import java.sql.*;
import sqlj.runtime.ref.DefaultContext;
import oracle.sqlj.runtime.Oracle;
/* Объявление переменных */
/* Определение типа Iterator для сохранения результатов запроса */
#sql iterator ExampleIter (int emp_id, String emp_name,float salary);
public class MyExample
/* Метод main */
{ public static void main (String args[]) throws SQLException
{
/* Установка соединения с базой данных для SQLJ */
Oracle.connect
("jdbc:oracle:thin:@shannon:1234:nicholas1", "hr", "hr");
/* Вставка строки в таблицу employees */
#sql { insert into employees (emp_id, emp_name, salary)
values (1001, 'Nina Alapati', 50000) };
/* Создание экземпляра итератора ExampleIter */
ExampleIter iter;
/* Сохранение результатов запроса SELECT в итераторе ExampleIter */
#sql iter={ select emp_id, emp_name, salary from employees };
/* Получение доступа к сохраненным в итераторе данным с помощью метода next() */
while (iter.next()) {
System.out.println
(iter.emp_id,()+" "+iter.emp_name()+" "+iter.salary());
}
}
}

Как видно в этом листинге, SQLJ представляет собой не более чем просто вложенный SQL в программе Java. С помощью SQLJ очень легко обращаться к базе данных из кода Java. Более подробная информация по Oracle и Java доступна по адресу http://otn.oracle.com/tech/java/content.html.

В этом приложении были приведены лишь очень краткие сведения по возможностям SQL и PL/SQL в Oracle Database 11g. Хотя от администраторов баз данных Oracle не всегда требуют хорошо разбираться в SQL и PL/SQL, чем больше вы будете знать об этих языках, тем более высоким будет ваш профессиональный уровень как администратора баз данных Oracle.

Вас заинтересует / Intresting for you:

Oracle IDE: JDeveloper, SQL De...
Oracle IDE: JDeveloper, SQL De... 4521 просмотров Ольга Потемкина Tue, 21 Nov 2017, 13:18:46
Значения NULL в PL/SQL Oracle
Значения NULL в PL/SQL Oracle 4802 просмотров Дэн Wed, 01 Jul 2020, 08:10:56
Apex Oracle обучающий видеокур...
Apex Oracle обучающий видеокур... 8805 просмотров Дэн Sun, 05 Aug 2018, 16:36:33
Инструментарий XML-разработчик...
Инструментарий XML-разработчик... 10256 просмотров Дэн Tue, 21 Nov 2017, 13:33:37
Войдите чтобы комментировать