Search
Write a publication
Pull to refresh

Выбор механизма вызова хранимых процедур Oracle из Java

У зарубежного заказчика существует система под управлением СУБД Oracle – множество схем, содержащие помимо данных пакеты с бизнес логикой на PL/SQL. В наши задачи входило расширение функционала путем реализации новых пакетов и дальнейшая интеграция с разрабатываемыми веб сервисами на технологиях Java.
Для задачи интеграции веб сервисов с PL/SQL процедурами были сформированы следующие требования к библиотекам:
• поддержка как хранимых процедур, так и функций;
• поддержка множественных как входных, так и выходных параметров;
• поддержка сложных структур, как для входных, так и для выходных параметров.
В качестве потенциальных кандидатов, реализующих механизм вызова хранимых процедур Oracle из Java, значились технологии, часто нами используемые:
• Hibernate;
• Spring.

Hibernate

Hibernate налагает множества ограничений для вызова хранимых процедур (функций) СУБД и Oracle в частности: хранимая процедура или функция должны возвращать resultset первым out (выходным) параметром. Это ограничение означает, что мы можем вернуть в Java только единственный выходной параметр. А именно: для функции – возвращаемое значение, для процедуры – out (выходной) параметр, причем этот параметр должен быть первым. Уже при одном таком ограничении hibernate не подходил для решения наших задач. Подробнее о вызове хранимых процедур узнайте в главе 16.2.2. “Using stored procedures for querying” документации hibernate.

Spring

Spring предлагает более гибкий вариант, а именно, расширяя класс StoredProcedure, инкапсулировать каждую процедуру/функцию в объект. Допустимы множественные входные и выходные данные. Структура данных может быть сложной, для ее преобразования реализуется мэппинг. Документация содержит информацию об использовании хранимых процедур/функций и пример реализации: 11.4.4. StoredProcedure.

Вместо заключения

В итоге мы использовали Spring для реализации вызова хранимых процедур/функций Oracle из Java. Мне было бы интересно узнать, какие технологии, библиотеки Вы используете для доступа к данным СУБД, для вызова хранимых процедур/функций?
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.