如何将完整的数据库模式公开为OData服务



我正在启动一个新项目和我的公司现在仅使用OData REST服务进行内部数据交换,同时退役之前开发的所有通用REST服务。我正在集成的遗留系统在许多数据库上运行如MS SQL、Oracle、DB2、MySql、Progres、Informix和HANA。

如何以通用的方式将完整的DB SQL模式公开为OData REST服务,而不必使用Apache Spring和Olingo构建OData服务,每张桌子一次提供一项服务。

否则,我将需要构建一个通用的RESTOData服务,它将自动公开来自所有这些数据库的数据,通过JDBC驱动程序读取表和列元数据,并使用它来定义OData属性。

恐怕没有即插即用的解决方案可以将eco系统中的所有数据库暴露给OData,您可能有两种选择来解决问题

  1. 创建一个自定义OData处理器,它使用您提到的方法,即建立JDBC连接,生成SQL字符串,并实现所有OData功能,如readEntitySetwriteEntitySet等。在我看来,这非常强大,但同时也非常耗时,尤其是当您开始实现OData操作文件$filter
  2. 另一种替代方法是在这里使用OData Jpa处理器。如果您实现了OData API,您仍然需要定义JPAModel。您可以使用eclipse工具从数据库表中生成Jpa模型文件,如这里所述

我也使用了oLingo。第一个问题是必须实现多少个类,第二个问题是应该是一个具有多个实体的端点,还是每个表一个端点?两者都有利弊。

在使用oLingo两年后,我终于决定使用JAXB构建一些本地的东西。https://github.com/rtdi/JDBCoData

最新更新