4

objectify/アプリ エンジンの達人全員に質問です。

親オブジェクトのキーを子に格納することで、親子関係を持つオブジェクトを作成しています。これは Key 型のオブジェクトに格納されます。たとえば、車のオブジェクトとタイヤのオブジェクトがあるとします。タイヤ オブジェクトは、親キーを Key 型の変数に格納します。

@Entity
Public class Tire{
     @Id Long id;
     Key<Car> ParentKey;

     int size;
}

私のアプリでは、特定の車のすべてのタイヤを取得する必要があります。クエリを使用してこれを行うことができます。

これはこれを達成するための適切な方法ですか?これにより、エンティティ グループに問題が発生しますか? これは多数の車とタイヤに対して効率的でしょうか?

4

2 に答える 2

5

現在、少なくともapp engineで定義されているように、親子関係を作成していません。ドキュメントを確認してください。親子関係を追加すると、車とそのタイヤが物理的に一緒に保管されるため、作業が高速化されますが、ある時点で不要になった場合、削除するのが難しくなる可能性があります。

Objectify を使用して親子関係を作成するには、@Parent注釈を追加します。

// Use com.googlecode.objectify.Key instead of 
// com.google.appengine.api.datastore.Key
@Parent Key<Car> parentKey;

ここで、特定の車に属するすべてのタイヤを取得するには:

List<Tyre> tires = ofy().query(Tyre.class).ancestor(carKey).list();
于 2011-08-30T02:37:56.153 に答える
1

私はまったく同じ方法を使用しています-問題ありません。

エンティティ グループとの競合は見られません。大規模なグループ (少なくとも数千のエンティティ) では問題なく動作しています。

PS 同じグループに属するデータを取得する必要がある場合は、GAE グループを使用する必要はありません。さらに、エンティティ グループは、フィルタリングではなく、トランザクションに最適です。

于 2011-08-29T20:47:37.353 に答える