2014-10-28 69 views
0

我必须创建一个屏幕,该屏幕使用复杂的连接从多个不同的表中获取数据。UI中将只有一个服务调用来获取数据,这将在JSON中返回。将数据从Oracle中的单个结构中的多个查询中返回

这些是来到我的脑海

  1. 从服务层执行多个查询和填充一个对象,并发送此JSON对象的方法。
  2. 创建临时表,填充原始数据更新时所需的数据,并在显示上述屏幕时查询临时表。

对于我来说这两种方法都不具有说服力。我不希望来自服务层的多个数据库调用或为此创建临时表。相反,我想有一个存储过程将执行多个查询并返回一个自定义结构,该自定义结构可以映射到一个Java对象,而该对象又将返回到UI层。

这可能吗?

+0

是的,这是可能的。你想要做什么取决于性能是否可以接受。 – Ben 2014-10-28 08:14:44

+0

存储过程是一个不错的选择。如果没有涉及DML语句,那么最好使用一个函数,当然没有这样的规则。 – user75ponic 2014-10-28 09:49:10

回答

1

您有几种选择,这取决于你的服务层,你的数据库层和你的数据库开发人员的能力...

  1. 创建具有多种输出sys_refcursor参数的存储过程;通过游标将所需的数据传递到服务层;让服务层构建JSON对象并将其发送给您的GUI。
  2. 使用单个输出sys_refcursor参数创建存储过程,该参数将包含具有所需子结构的嵌套refcursor列;服务层从它构建JSON对象并将其发送到您的GUI。
  3. 创建一个存储过程,以XML形式构建完整的复杂结构;服务层将XML转换为JSON并将其发送到您的GUI。
  4. 创建一个在JSON(Oracle 12.1.0.2)中构建完整复杂结构的存储过程,并将其通过服务层传递给GUI。
  5. 创建一个视图,用XML构建复杂的结构;让服务层查询您需要的特定行的视图并将XML转换为JSON; ...
+0

Thanks.Sounds很棒。让我试试这些并回复。 – 2014-10-28 10:40:54

相关问题