Обеспечение поддержки доступа к хранимым процедурам для продукта преобразования данных - PullRequest
1 голос
/ 27 августа 2010

Я работаю с продуктом преобразования данных, который имеет графический интерфейс, который отображает один тип объекта на другой. Так что у него есть группа элементов слева, которые отображаются на элементы справа. Это может быть 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) Есть ли лучший способ справиться с этим?

ТИА

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