Java-класс в БД
Может кто-нибудь объяснить, почему была идея хранить класс Java в Db? Для чего это хорошо? А как создать хранимую процедуру с классом Java?
С наилучшими пожеланиями!
6 ответов
Oracle ввел хранимые процедуры в свою базу данных в выпуске 8i. Я обозначал "интернет", как и "готовый к интернету", что в основном было маркетингом. Но хранимые процедуры 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. Это не достаточно хорошо по двум причинам:
- Всегда лучше работать со встроенными модулями, чем заново изобретать колесо
- Как я уже упоминал, Java в базе данных не работает так же хорошо, как нативный код.
Конечно, если вы работаете с продуктом, который должен работать с несколькими различными продуктами баз данных, то кроссплатформенная адаптивность Java очень привлекательна. Разные варианты СУБД наиболее расходятся в том, что касается их процедурных языков (T-SQL против PL/SQL и т. Д.), Поскольку для них нет стандарта, в отличие от SQL.
Если вы хотите узнать о написании JSP в Oracle, лучше начать с онлайн-документации. Если окажется, что вы используете другую базу данных, а не Oracle, я уверен, что у продукта есть собственное руководство.
Вероятно, для преимуществ, перечисленных здесь.
Пример того, как их создавать, вы можете найти здесь Oracle и Java Stored Процедуры.
Sybase ASE также поддерживает хранимые процедуры Java, но только Java 1.2 в ASE 15, IIRC. Для пользы - см. Другие ответы.
Не совсем уверен, в чем вопрос... идея состояла в том, чтобы просто выполнять хранимые процедуры в Java вместо более таинственных и незнакомых языков сценариев хранимых процедур. Вот как это работает: http://www.oracle.com/technology/tech/java/jsp/index.html
Debuger,
Как и некоторые другие постеры, ваш вопрос очень расплывчатый.
Вы имеете в виду:
- Хранимые процедуры на базе Java в базе данных?
- Отображение Java- объекта в таблицу базы данных?
- Хранить байт-код класса Java в таблице базы данных?
Что касается пункта 1, некоторые базы данных предлагают программный хук, позволяющий вам кодировать хранимые процедуры и функции с использованием Java и предоставлять их движку SQL
Для пункта 2 существуют объектно-реляционные структуры, которые отображают Java-объект (экземпляр) в реляционные таблицы для доступа на чтение и запись. (Пример: см. Hibernate)
Для пункта 3 вы можете гипотетически написать ClassLoader, который будет загружать классы из записи базы данных, содержащей BLOB рассматриваемого класса.
Надеюсь, что это помогает некоторым.
Я думаю, что вопрос об объектно-реляционном сопоставлении. Вы можете декларативно описать правила отображения объектов Java на таблицы реляционной базы данных. Если вы это сделаете, вы можете сэкономить много времени на написание кода JDBC, отслеживание изменений объекта, реализацию стратегий загрузки и т. Д.