Spring Data MongoDB: как реализовать "отношения сущностей"?

название этого вопроса довольно противоречиво, так как я пытаюсь реализовать отношения в нереляционной базе данных... :)

но я имею в виду, как определение ассоциаций между сущностями в классах моделей приложений, работающих с MongoDB.

работа с JPA я часто использую @ManyToMany или @OneToMany аннотации для определения отношений между объектами. Есть ли что-то подобное в весенних данных MongoDB?

Изучение MongoDB I понял, что есть два возможных подхода к ассоциации: ссылки и Внедренные Данные.

какой из них используется Spring Data? Можно ли настроить режим ассоциации?

2 ответов


вы можете использовать аннотацию @DBRef для сохранения ссылочного класса в отдельной коллекции, иначе документ будет сохранен в том же документе (json). Использование DBRef требует дополнительного запроса для драйвера mongodb, вы должны рассмотреть это для анализа проблем производительности.

с документация по данным spring

@DBRef-применяется в поле, чтобы указать, что он должен храниться с помощью com.в MongoDB.DBRef.

7.3.4 Использование DBRefs Структура сопоставления не должна хранить дочерние объекты, встроенные в документ. Вы также можете хранить их отдельно и использовать DBRef для ссылки на этот документ. Когда объект загружается из MongoDB, эти ссылки будут с нетерпением разрешены, и вы получите сопоставленный объект, который выглядит так же, как если бы он был сохранен в вашем главном документе.


можно использовать RelMongo framework, который позволяет реализовать отношения, предоставляя поддержку аннотаций @OneToMany и @OneToOne.