Java-класс в БД - PullRequest
       52

Java-класс в БД

0 голосов
/ 10 мая 2010

Может кто-нибудь объяснить, почему была идея хранить класс Java в Db? Для чего это хорошо? А как создать хранимую процедуру с классом Java?

С наилучшими пожеланиями!

Ответы [ 6 ]

2 голосов
/ 10 мая 2010

Oracle представила хранимые процедуры в своей базе данных в выпуске 8i. i расшифровывалось как «интернет», как и «готовый к интернету», что в основном было маркетингом. Но хранимые процедуры Java позволили Oracle значительно расширить диапазон функциональных возможностей, доступных в базе данных, используя огромное количество доступных библиотек Java. Многие новые функции базы данных в Oracle 8i были PL / SQL-обертками библиотек Java, особенно XML.

Значительно, Oracle переписал большую часть этой функциональности в собственный C в Oracle 9, потому что он работал намного быстрее, чем упакованный Java-контент. Я знаю, кажется, что.

Для нас, когда имеет смысл использовать хранимые процедуры Java? В основном, когда в Java доступны функции, недоступные на родном языке баз данных. Например, я написал JSP для упаковки Java-классов системного журнала ICE, чтобы мои процедуры записи в PL / SQL могли записывать в файлы системного журнала. Это указывает на очень распространенный вариант использования Java - расширение сферы применения наших баз данных в ОС. Возможно, наиболее распространенное использование JSP - это написание команды host, которая позволяет программе PL / SQL запускать внешний исполняемый файл.

Я знаю некоторых разработчиков, которые пишут JSP, потому что они знают Java и не хотят изучать PL / SQL. Это не достаточно хорошо по двум причинам:

  1. Всегда лучше работать со встроенными модулями, чем заново изобретать колесо
  2. Как я уже упоминал, Java в базе данных работает не так хорошо, как собственный код.

Конечно, если вы работаете с продуктом, который должен работать с несколькими различными продуктами баз данных, то кросс-платформенность Java очень привлекательна. Разные варианты СУБД наиболее расходятся, когда речь заходит об их процедурных языках (T-SQL против PL / SQL и т. Д.), Потому что в отличие от SQL, для них нет стандарта.

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

0 голосов
/ 10 мая 2010

Debuger,

Как и спрашивали некоторые другие постеры, ваш вопрос очень расплывчатый.

Вы имеете в виду:

  1. Хранимые процедуры на основе Java в базе данных?
  2. Отображение Java объекта в таблицу базы данных?
  3. Хранить байт-код класса Java в таблице базы данных?

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

Для пункта 2 существуют объектно-реляционные структуры, которые отображают Java-объект (экземпляр) в реляционные таблицы для доступа на чтение и запись. (Пример: см. Hibernate)

Для пункта 3 вы можете гипотетически написать ClassLoader, который будет загружать классы из записи базы данных, содержащей BLOB рассматриваемого класса.

Надеюсь, это поможет некоторым.

0 голосов
/ 10 мая 2010

Sybase ASE также поддерживает хранимые процедуры Java, однако только Java 1.2 в ASE 15, IIRC. О преимуществах - см. Другие ответы.

0 голосов
/ 10 мая 2010

Я думаю, что вопрос об объектно-реляционном отображении. Вы можете декларативно описать правила отображения объектов Java на таблицы реляционной базы данных. В этом случае вы можете сэкономить много времени на написание кода JDBC, отслеживание изменений объекта, реализацию стратегий загрузки и т. Д.

http://en.wikipedia.org/wiki/Object-relational_mapping

0 голосов
/ 10 мая 2010

Вероятно, для перечисленных льгот здесь .

Пример их создания вы можете найти здесь Хранимые процедуры Oracle и Java .

0 голосов
/ 10 мая 2010

Не совсем уверен, в чем вопрос ... идея состояла в том, чтобы просто выполнять хранимые процедуры в Java вместо более таинственных и незнакомых языков сценариев хранимых процедур. Вот как это работает: http://www.oracle.com/technology/tech/java/jsp/index.html

...