首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从两个不同的数据库中检索同一DTO的信息

从两个不同的数据库中检索同一DTO的信息
EN

Stack Overflow用户
提问于 2015-04-09 01:50:46
回答 2查看 1.6K关注 0票数 16

我试着用一个简短的例子让它变得尽可能简单。

我们有两个数据库,一个在MSSQLServer中,另一个正在进行中。如下所示,我们在web应用程序的UI表中显示了用户DTO。

代码语言:javascript
复制
User

int, id
String, name
String, accountNumber
String, street
String, city
String, country

现在这个DTO(实体)不仅仅存储在一个数据库中,同一用户的一些信息(字段)存储在一个数据库中,另一些信息(字段)存储在另一个数据库中。

代码语言:javascript
复制
MSsql

Table user
int, id
String, name
String, accountNumber


Table userModel
int, id
String, street
String, city
String, country

正如您可以看到的,键是链接两个数据库中的两个表的唯一部分,正如我之前所说的,它们不在同一个数据库中,也不使用相同的数据库供应商。

我们需要对每一列的UI表进行排序。显然,我们需要使用来自两个数据库的信息创建用户dto。

我们现在的建议是,如果用户想要使用街道字段进行排序,我们在Progress数据库中运行一个查询,并使用此结果集获得一个页面(使用分页),然后使用这些键直接转到MSSQLServer用户表,然后运行另一个查询来提取缺少的信息,并将其保存到DTO中,然后将其传输到UI。With implies在一个数据库中运行查询,然后在第二个数据库中根据返回的键执行其他查询。

根据用户想要应用排序的列(字段),数据库的顺序可能会改变。

从技术上讲,我们将创建一个jparepository作为外观,并根据字段在正确的数据库中创建流程。

我的问题是:在这个场景中有一些常用的模式,我们使用spring,所以spring可能有一些开箱即用的功能来支持这个需求,如果这可以使用jparepositories (我对此有几个疑问,因为我们将使用两个不同的实体管理器,每个数据库一个)。

注意:不能将数据从一个数据库移动到另一个数据库。

EN

回答 2

Stack Overflow用户

发布于 2015-05-03 00:39:25

因为您总是需要从这两个数据库获取数据,为什么不填充本地java用户对象,然后对这些对象进行排序(使用具有要排序的适当字段的比较器)。与在数据库查询中进行排序相比,在本地排序的优点是,您不必在每次更改排序字段时都向数据库发送请求。

所以,总结一下:

1-针对这两个数据库发出两个sql查询,以获取用户

2-使用检索到的值构建用户对象

3-使用Java比较器对任何字段上的用户进行排序,而不必向数据库发出新的查询。

票数 1
EN

Stack Overflow用户

发布于 2015-05-06 19:18:49

我的建议是找到一种将两个数据库链接在一起的方法,这样您就可以在不影响代码的情况下利用数据库驱动程序功能。

从本质上讲,如果Progress数据库可以链接到SQL Server,您将能够使用单个SQL查询来查询这两个数据库,并对id列进行连接,然后您将获得一个合并的、排序的和分页的结果集,以便应用程序显示。

我不是Progress数据库方面的专家,但似乎有一个用于它的ODBC驱动程序,所以您可以尝试link it to SQL Server

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29521822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档