jjzjj

java - 从两个不同的数据库中检索相同 DTO 的信息

coder 2023-05-11 原文

我试图通过一个简短的例子来尽可能简单。

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

User

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

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

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 意味着在一个数据库中运行一个查询,然后根据第二个数据库中返回的键运行另一个查询。

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

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

我的问题是: 在这种情况下常用某种模式,我们正在使用 spring,所以可能 spring 有一些开箱即用的特性来支持这个需求,如果使用 jparepositories 可能会很棒(我对此有几个疑问因为我们将使用两个不同的实体管理器,每个数据库一个)。

注意:将数据从一个数据库移动到另一个数据库不是一种选择。

最佳答案

为此,您需要有单独的 DataSource/EntityManagerFactory/JpaRepository

在 Spring 框架中没有开箱即用的支持这种架构,但是您可以轻松地将双重 DataSource 对隐藏在服务层后面。你甚至可以配置JTA DataSources对于 ACID operations .

关于java - 从两个不同的数据库中检索相同 DTO 的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29521822/

有关java - 从两个不同的数据库中检索相同 DTO 的信息的更多相关文章

  1. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

    大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

  2. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  3. ruby-on-rails - 如何在 ruby​​ 中使用两个参数异步运行 exe? - 2

    exe应该在我打开页面时运行。异步进程需要运行。有什么方法可以在ruby​​中使用两个参数异步运行exe吗?我已经尝试过ruby​​命令-system()、exec()但它正在等待过程完成。我需要用参数启动exe,无需等待进程完成是否有任何ruby​​gems会支持我的问题? 最佳答案 您可以使用Process.spawn和Process.wait2:pid=Process.spawn'your.exe','--option'#Later...pid,status=Process.wait2pid您的程序将作为解释器的子进程执行。除

  4. java - 等价于 Java 中的 Ruby Hash - 2

    我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/

  5. ruby - 如果指定键的值在数组中相同,如何合并哈希 - 2

    我有一个这样的哈希数组:[{:foo=>2,:date=>Sat,01Sep2014},{:foo2=>2,:date=>Sat,02Sep2014},{:foo3=>3,:date=>Sat,01Sep2014},{:foo4=>4,:date=>Sat,03Sep2014},{:foo5=>5,:date=>Sat,02Sep2014}]如果:date相同,我想合并哈希值。我对上面数组的期望是:[{:foo=>2,:foo3=>3,:date=>Sat,01Sep2014},{:foo2=>2,:foo5=>5:date=>Sat,02Sep2014},{:foo4=>4,:dat

  6. ruby - Ruby 有 `Pair` 数据类型吗? - 2

    有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳

  7. ruby - 这两个 Ruby 类初始化定义有什么区别? - 2

    我正在阅读一本关于Ruby的书,作者在编写类初始化定义时使用的形式与他在本书前几节中使用的形式略有不同。它看起来像这样:classTicketattr_accessor:venue,:datedefinitialize(venue,date)self.venue=venueself.date=dateendend在本书的前几节中,它的定义如下:classTicketattr_accessor:venue,:datedefinitialize(venue,date)@venue=venue@date=dateendend在第一个示例中使用setter方法与在第二个示例中使用实例变量之间是

  8. java - 从 JRuby 调用 Java 类的问题 - 2

    我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www

  9. java - 我的模型类或其他类中应该有逻辑吗 - 2

    我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我

  10. java - 什么相当于 ruby​​ 的 rack 或 python 的 Java wsgi? - 2

    什么是ruby​​的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht

随机推荐