Короче, нет.Это также вопрос яблок и апельсинов.MongoDB - это замена SQL в самом широком смысле этого слова.Они обе базы данных.JPA - это слой ORM, который может поддерживать постоянные отношения 1: N и N: M.В настоящее время нет ни одного слоя MongoDB ORM, который реализует JPA или что-то похожее на него.
Тем не менее, в контексте базы данных NoSQL, такой как mongo, ваша схема неверна.Вы не должны встраивать документы с контентом, который используется повторно (в большинстве случаев исключения включают оптимизацию производительности, когда вы жертвуете такими вещами, как нормализация для дублирования данных и, следовательно, производительности).
В этом случае вы хотите отдельный сбор сведений о курсеи сохраните массив значений _id этой детали курса в вашем студенческом документе.Таким образом, вы можете изменить эту коллекцию отдельно, не отслеживая мутации документов с подробностями курса.
Не используйте для этого ссылки DBRefs .DBRef не являются подходящим инструментом для ссылок на идентификаторы документов известного типа.Вместо этого используйте простые ссылки _id.
Итак, версия TL; DR:
- Поместите документы с подробностями курса в отдельную коллекцию
- Вложите только массив _id в курсподробные документы у вашего ученика
Пример:
db.students {
_id: ..,
name: Willy Wonka,
courses: [..,..,..]
}
db.courses {
_id: ..,
course: "MongoDB for Dummies"
}