Объектно-реляционные возможности предоставляют более естественный и продуктивный способ для поддержания согласованной структуры набора Java-классов на уровне приложения и модели данных на уровне хранения данных. В СУБД Oracle объектно-реляционные возможности тесно интегрированы со средой Java с помощью стандартных интерфейсов прикладного программирования JDBC и SQLJ. Объектные типы SQL могут быть отображены в Java-классы. Утилита JPublisher (JPub) автоматически генерирует файлы для JDBC или SQLJ с определениями Java-классов, реализующих эти отображения. Каждый сгенерированный Java-класс содержит определенные для него методы чтения состояния объектов с сервера базы данных и записи состояния на сервер. В свою очередь, Java-приложения могут использовать эти сгенерированные Java-классы для сохранения объектов в базе данных и их выборки из базы.
(Прим. ред. О стандарте JDBC см. например, [7]. О спецификациях SQLJ см. например, [8].)
Далее представлены фрагменты кода Java-класса, сгенерированные утилитой JPub.
// Создать Java-класс, который реализует интерфейс SQLData
public class JPurchaseOrder implements SQLData
{
…
public void readSQL (SQLInput stream, String typeName)
throws SQLException {…}
public void writeSQL (SQLOutput stream)
throws SQLException {…}
…
}
Этот Java-класс JPurchaseOrder может быть далее использован в следующей Java-программе для выборки объектов из базы данных.
// Экземпляры объекта можно рассматривать как Java-объекты
ResultSet rs = stmt.executeQuery("select value(p) from
purchase_order_tab p");
rs.next();
JPurchaseOrder jp = (JPurchaseOrder) rs.getObject(1);
String streetName = jp.shipAddr.street;