Я работаю с продуктом преобразования данных, который имеет графический интерфейс, который отображает один тип объекта на другой. Так что у него есть группа элементов слева, которые отображаются на элементы справа. Это может быть XML, Java или база данных. С базой данных продукт построен поверх Hibernate, поэтому он создает определения на основе импорта метаданных и выполняет запросы с использованием Hibernate. В продукте вы вызываете функцию DatabaseSelect (), которая связана с корневым элементом коллекции элементов таблицы, и эта функция предоставляет параметры для предложения where, что-то вроде этого (представьте, что это часть GUI):
Person [call DatabaseSelect(where LastName > "K")]
Id
LastName
FirstName
...
Мы также хотим добавить поддержку хранимых процедур. Мое понимание хранимых процедур заключается в том, что вы не можете знать, что они будут возвращать через обычные метаданные JDBC, поэтому мы потребуем, чтобы клиент указал элементы набора результатов вручную. Я думал о реализации пользователем хранимой процедуры для заполнения «таблицы» аналогично тому, как используется выбор, примерно так:
StoredProcResults [call DatabaseStoredProcedure(value 1, value 2, value 3)]
ResultValue1
ResultValue2
ResultValue3
...
Я надеюсь, что при таком способе обработки 90% (или более) доступа к (устаревшим) хранимым процедурам там будет удобным способом.
Другим уровнем поддержки, который мы рассматриваем, является использование хранимой процедуры в качестве функции, которая может быть вызвана в качестве одного из аргументов оператора select, как указано значением класса Where в функции DatabaseSelect () ( выше). Я думаю, что Hibernate должен поддерживать это использование напрямую (где хранимая процедура (функция действительно) возвращает скалярное значение.
Случай, который не будет обрабатываться, - это случаи, когда хранимая процедура используется как часть оператора выбора, то есть когда она должна быть связана с доступом к другим таблицам через соединение.
Мои вопросы:
1) Полезен ли этот уровень поддержки и будет ли он охватывать наиболее необходимый доступ к хранимым процедурам.
2) Есть ли лучший способ справиться с этим?
ТИА