2

JPA アノテーションでマップされたドメイン オブジェクトがあります。User多くのオブジェクトQuestionがあります (1000 番目の可能性があります)。ユーザー オブジェクトの質問リストのフェッチ タイプを に設定する必要がありましたeager。Web サービスに次のようなパスがあります。

GET /users/3

これはもちろん、ユーザー オブジェクトと、ユーザーが作成したすべての質問を返します。Question独自の関係などがあります...

私の懸念は、特定のユーザーを獲得するには少し時間がかかるということです。いくつかの質問だけを取得し、必要に応じてさらに読み込む方がよいでしょう。ただし、それらの注釈ではそれができないと思います。これらの注釈を削除して、代わりに特定のユーザーの質問を手動で検索し、そのユーザーにサブセットを割り当てる必要がありますか?

Web サービスでこのようなケースを解決する一般的な方法は何ですか? 例/擬似コードが提供されている場合は、非常に高く評価されます。Spring MVC 3.2 を使用しています。

4

2 に答える 2

0

答えはJPAとエンティティそのものだと思います。JPA + Hibernate を使用する場合、非常に大きなデータ セットを返す必要があるが、それに関連するデータを返さないユース ケースもあります。これらの JPA エンティティを変換するのは非常に面倒です。

したがって、問題を解決する方法は次のとおりです。

  1. 必要なデータを必要なレベルでクエリします
  2. 必要なデータを含むオブジェクトをデタッチします
  3. オブジェクトとそのプロパティとともに、必要のないすべてのデータ/関係をトリム/削除します
  4. JSONに変換して返す

関係を維持する必要がある場合は、次のようなグラフ ビルダーの使用を検討してください。 /google/gson/graph/GraphAdapterBuilder.java?r=1170

于 2013-09-23T21:09:56.300 に答える