Spring Data MongoDB:如何实现“实体关系”?

这个问题的标题非常矛盾,因为我试图在非关系数据库中实现关系......:)

但我指的是如何在使用MongoDB的应用程序模型类中定义实体之间的关联

使用JPA时,我经常使用注释来定义对象之间的关系。Spring Data MongoDB中是否有类似的东西?@ManyToMany@OneToMany

在研究MongoDB时,我意识到有两种可能的关联方法:引用嵌入式数据

Spring Data使用哪一个?是否可以配置关联模式?


答案 1

您可以使用@DBRef注释将引用的类保留在单独的集合中,否则文档将保留在同一文档 (json) 中。使用DBRef需要对mongodb驱动程序进行额外的查询,您应该考虑这一点来分析性能问题。

来自弹簧数据文档

@DBRef - 在字段中应用以指示将使用 com.mongodb.DBRef 存储它。

7.3.4 使用 DBRefs 映射框架不必存储嵌入在文档中的子对象。您还可以单独存储它们,并使用 DBRef 引用该文档。当从MongoDB加载对象时,这些引用将被紧急解析,您将获得一个映射的对象,该对象看起来与嵌入在主文档中的存储对象相同。


答案 2

您可以使用RelMongo框架,它允许通过提供@OneToMany和@OneToOne注释支持来实现关系。