有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用Spring数据JPA/MongoDB交叉存储,一个查询可以跨越两个数据库吗?

我正在使用mongodb客户服务数据示例(可从https://github.com/SpringSource/spring-data-document-examples获得)

该示例使用@RelatedDocument跨数据库关联域对象。它允许足够好地存储和更新对象

但是,我想对JPA数据库(在示例HSQLDB中)和MongoDB执行一个具有条件的查询

这可能吗?有没有任何例子证明这是可能的


与该问题不直接相关的评论:

我的用例是我们的应用程序是一个Oracle DB,但我们现在开始接收半结构化数据。JPA实体可由用户在某些约束条件下进行过滤,但我们希望将此功能扩展到半结构化数据

似乎还有竞争技术QueryDSL和EclipseLink,但我找不到任何关于跨数据库查询的技术

在JPA中,似乎不可能进行跨数据库查询,因为每个数据库都有不同的PersistanceUnits。然而,mongodb交叉存储似乎否定了这个特殊问题


共 (1) 个答案

  1. # 1 楼答案

    我从未使用过Spring数据JPA,但如果JPA不能做到这一点,我怀疑Spring数据是否能提供这样的功能
    我不知道你对mongodb cross store了解多少。所以我将很快解释mongodb可以做什么和不能做什么

    使用mongodb时,不能跨多个集合(表)进行查询,因此不能使用普通mongodb进行连接。所以@RelatedDocument是Spring Data提供的一个特性。相关文档可能是嵌入的(不知道Spring数据是否支持),也可能是其他集合(和数据库)中文档的简单DBRef。使用DBRef,您只能查询@RelatedDocument字段,如_id、collection和database,但不能查询实际引用的documents属性

    这意味着mongodb不允许在单个查询中搜索跨数据库,因为不能跨集合进行查询,所以也不能针对数据库进行查询。你唯一的跨店功能是针对碎片收藏。有了这个,你就可以通过shardkey将集合分布在多个节点上。MongoDB可能需要跨所有集合碎片进行查询才能完成查询。但除此之外,我不会称之为真正的跨数据库功能,您没有这样的功能

    如果这没有帮助,请更详细地解释你想做什么