web-dev-qa-db-ja.com

Spring Data MongoDB:「エンティティリレーションシップ」の実装方法

私は非リレーショナルデータベースにリレーションを実装しようとしているので、この質問のタイトルはまったく矛盾しています... :)

しかし、私が意味するのは、MongoDBで動作するアプリケーションモデルクラスでエンティティ間の関連付けを定義するの方法です。

JPAでの作業では、よく@ManyToManyまたは@OneToManyアノテーションは、オブジェクト間の関係を定義します。 Spring Data MongoDBに似たようなものはありますか?

MongoDBを調べると、関連付けには2つの可能なアプローチがあることに気付きました:参照および埋め込みデータ

Spring Dataで使用されているのはどれですか?アソシエーションモードを設定することは可能ですか?

22
davioooh

@DBRefアノテーションを使用して、参照されるクラスを別のコレクションに永続化できます。そうしないと、ドキュメントは同じドキュメント(json)に永続化されます。 DBRefを使用するには、mongodbドライバーの追加クエリが必要です。パフォーマンスの問題を分析するには、これを検討する必要があります。

スプリングデータのドキュメント から

@ DBRef-com.mongodb.DBRef。を使用して格納されることを示すためにフィールドで適用されます

7.3.4 DBRefの使用マッピングフレームワークは、ドキュメント内に埋め込まれた子オブジェクトを保存する必要はありません。また、それらを個別に保存し、DBRefを使用してそのドキュメントを参照することもできます。オブジェクトがMongoDBから読み込まれると、それらの参照は熱心に解決され、マスタードキュメントに埋め込まれて保存されているかのように見えるマップされたオブジェクトが返されます。

15

RelMongo フレームワークを使用して、@ OneToManyおよび@OneToOneアノテーションのサポートを提供することにより、リレーションを実装できます。

1
Ledher bay