Объектно-ориентированные возможности PL/SQL

Объектно-ориентированные возможности PL/SQL
Prev
Next »

Язык PL/SQL всегда поддерживал традиционные процедурные стили программиро­вания, в частности структурное проектирование и функциональную декомпозицию. Пакеты PL/SQL позволяют использовать также объектно-ориентированный подход, применяя в работе с реляционными таблицами принципы абстракции и инкапсуляции. В новых версиях Oracle введена непосредственная поддержка объектно-ориентирован­ного программирования (ООП). Программистам стали доступны богатая и сложная система типов, иерархия, а также взаимозаменяемость типов.

Хотя тема объектно-ориентированного программирования в Oracle могла бы стать пред­метом отдельной книги, мы рассмотрим лишь несколько примеров, демонстрирующих важнейшие аспекты объектно-ориентированного программирования на PL/SQL:

  •  создание и использование объектных типов;
  •  наследование и взаимозаменяемость;
  •  эволюция типов;
  •  выборка данных на основе REF-ссылок;
  •  объектные представления, в том числе INSTEAD OF.

Не рассчитывайте найти в этой статье:

  •  Полные диаграммы синтаксиса команд SQL для работы с объектными типами.
  •  Обсуждение вопросов, относящихся к компетенции администраторов базы дан­ных, — например, импортирования и экспортирования объектных данных.
  •  Описания низкоуровневых аспектов (структуры хранения данных на диске). Начнем с краткого исторического экскурса.

 

История объектных возможностей Oracle

Впервые появившиеся в 1997 году как дополнение к Oracle8, объектные возможности позволили разработчикам расширить набор встроенных типов данных Oracle абстракт­ными типами данных. Также в Oracle8 были введены определяемые программистом коллекции, оказавшиеся очень удобными. Объектная модель Oracle обеспечивает много интересных возможностей, в частности доступ к данным через указатели, но она не поддерживает ни наследования, ни динамического полиморфизма, и поэтому объектно-ориентированные средства Oracle8 вряд ли произведут впечатление на приверженцев настоящего ООП. Сложность и низкая производительность объектных функций также не способствуют их успеху.

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

Однако в Oracle9i встроенная поддержка объектов была значительно расширена. Введена поддержка наследования и полиморфизма в базах данных, PL/SQL был оснащен новы­ми объектными средствами. Имеет ли смысл расширять объектную модель системы на структуру базы данных? Следует ли переписать существующие приложения клиентского и промежуточного уровней? Как показано в табл. 1, в Oracle были реализованы зна­чительные достижения в ООП, и переход на эту технологию выглядит очень заманчиво. Также в таблице перечислены полезные возможности, которые еще не реализованы.

Таблица 1. Возможности Oracle

Возможности Oracle

Таблица 1 (продолжение)

продолжение

 

В Oracle Database 10g было включено несколько полезных улучшений в области коллекций, но только одна новая возможность, относящаяся к объект­ным типам: она описана во врезке «Псевдостолбец OBJECT_VALUE» (см. с. 936).

Если вы еще не применяете объектно-ориентированное программирование в своих разработках, многие термины в этой таблице покажутся вам незнакомыми. Однако из оставшейся части этой статьи вы поймете их смысл и получите представление о более масштабных архитектурных решениях, которые вам придется принимать.

 

Prev
Next »
Войдите чтобы комментировать