web-dev-qa-db-fra.com

Spring Data MongoDB: comment implémenter des "relations d'entités"?

Le titre de cette question est assez contradictoire puisque j'essaye d'implémenter des relations dans une base de données non relationnelle ... :)

Mais ce que je veux dire, c'est comment définir les associations entre entités dans les classes de modèle d'application travaillant avec MongoDB.

En travaillant avec JPA, j'utilise souvent @ManyToMany ou @OneToMany annotations pour définir les relations entre les objets. Y a-t-il quelque chose de similaire dans Spring Data MongoDB?

En étudiant MongoDB, j'ai réalisé qu'il y avait deux approches possibles à l'association: Références et Embedded Data.

Lequel est utilisé par Spring Data? Est-il possible de configurer le mode d'association?

22
davioooh

Vous pouvez utiliser l'annotation @DBRef pour conserver la classe référencée dans une collection distincte, sinon le document sera conservé dans le même document (json). L'utilisation de DBRef nécessite une requête supplémentaire pour le pilote mongodb, vous devez en tenir compte pour analyser les problèmes de performances.

De documentation des données du printemps

@ DBRef - appliqué sur le terrain pour indiquer qu'il doit être stocké à l'aide d'un com.mongodb.DBRef.

7.3.4 Utilisation de DBRefs Le framework de mappage n'a pas besoin de stocker des objets enfants incorporés dans le document. Vous pouvez également les stocker séparément et utiliser un DBRef pour faire référence à ce document. Lorsque l'objet est chargé à partir de MongoDB, ces références seront résolues avec impatience et vous récupérerez un objet mappé qui ressemble à s'il avait été stocké incorporé dans votre document maître.

15
Ignacio A. Poletti

Vous pouvez utiliser le framework RelMongo qui permet de mettre en œuvre des relations en fournissant la prise en charge des annotations @OneToMany et @OneToOne.

1
Ledher bay