我使用的是一个数据转换产品,它有一个GUI接口,可以将一种类型的对象映射到另一种。所以左边有一堆元素映射到右边的元素。这些可以是XML,Java或数据库。使用数据库,产品构建在Hibernate之上,因此它基于导入元数据创建定义并使用Hibernate运行查询。在产品中,您调用DatabaseSelect()函数,该函数与表元素集合的根元素相关联,并且该函数提供了where子句的参数,类似于此(想象这是GUI的一部分):
Person [call DatabaseSelect(where LastName > "K")]
Id
LastName
FirstName
...
我们也想添加存储过程支持。我对存储过程的理解是你不知道它们将通过普通的JDBC元数据返回什么,因此我们将要求客户端手动指定结果集元素。我正在考虑实现存储过程的用户以类似于使用select的方式填充“表”,如下所示:
StoredProcResults [call DatabaseStoredProcedure(value 1, value 2, value 3)]
ResultValue1
ResultValue2
ResultValue3
...
我希望以这种方式这样做可以方便地处理90%(或更多)对(传统)存储过程的访问。
我们正在考虑的另一个支持级别是使用存储过程作为函数,可以作为select语句的一个参数调用,由DatabaseSelect()函数中Where类的值指定(以上)。我认为Hibernate应该直接支持这种用法(存储过程(函数真的)返回一个标量值。
无法处理的情况是将存储过程用作select语句的一部分,即必须通过连接访问其他表的情况。
我的问题:
1)此级别的支持是否有用,是否涵盖对存储过程的大多数必需访问。
2)有更好的方法来解决这个问题吗?
TIA