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.