【问题标题】:Join between two tabales in differenet databases using hibernate使用hibernate在不同数据库中的两个表之间连接
【发布时间】:2016-07-11 08:28:06
【问题描述】:

我有两台数据库服务器,都是 Oracle。假设我们有以下查询:

SELECT *
FROM TABLE_ONE E1
JOIN TABLE_TWO E2 ON E1.TWO = E2.ID

并且TABLE_ONE 在数据库服务器#1 上TABLE_TWO 在#2 上。 现在我想要一种机制,在不改变查询(这非常耗时)的情况下,休眠获取结果。请注意,spring framework 也参与其中。

【问题讨论】:

  • Hibernate 不支持跨多个“物理”数据库实例连接
  • 只是谷歌 :-) 老实说不要太多
  • @PrakashHariSharma 有针对这种情况的解决方案吗?
  • 您可以使用数据库LINK来执行join forum.hibernate.org/…
  • 是否有任何中间层(比如软件)可以让hibernate连接到它并且上帝保佑的层带来了hibernate的结果?

标签: java spring oracle hibernate


【解决方案1】:

使用oracle dblink 并为该表创建同义词或为该表创建视图以便能够在休眠中引用它。

【讨论】:

  • 在咨询了 db admin 之后,我意识到基于我们的某些顾虑,不允许使用 db 链接
  • 到目前为止,您执行此查询的情况如何?如果您可以从任何 sql 工具(sqldeveloper、toad、...)中运行它,那么您可以将其作为本机查询运行。如果您使用的是 spring data jpa,请创建自定义存储库并在 tehere 中运行它。试试看here
  • 我以前在单个数据库中运行此查询,现在我们的策略是我们有多个服务器,我正在寻找一种简单、有效且更改最少的方法。
  • 所以只有两个选项供您选择......一个前面提到的 dblink 或者您可以有两个实体管理器(每个用于不同的数据库)并创建两个单独的查询(因此表之间不再有连接)。但是,如果我可以建议...选择选项 1,因为如果没有安全限制,它会更容易。
【解决方案2】:

Hibernate 不支持加入多个物理数据库。您可以将其用于同一数据库下的两个模式。

【讨论】:

    【解决方案3】:

    创建一个数据库链接,如果您的 dba 不允许这样做,那么您必须进行某种客户端连接,这可能会很慢。和你的老板谈谈。

    【讨论】:

      猜你喜欢
      • 2011-08-07
      • 1970-01-01
      • 2019-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-06
      相关资源
      最近更新 更多