クエリを客観それは「のみ、get()は()入れて、キャッシュとの対話)(削除します。query()はキャッシュされていない」と言う をhttp://code.google.com/p/objectify-appengine/wiki/IntroductionToObjectify#Global_Cache。GAEのキャッシングは、私は客観ドキュメントに簡単な質問</p> <p>を持って
あなたが1つのルートエンティティを持っている場合(私が@Parentを持つと思われるスケーラビリティの問題があるため)、他のすべてのエンティティにキーがあり、クエリを実行する
ofy.query(ChildEntity.class).filter("rootEntity", rootEntity).list()
これは完全にキャッシュをバイパスしていますか?
このような場合は、条件のクエリを実行するための効率的なキャッシュ方法がある - またはそのことについてあなたは以下の
のような実際の祖先クエリを作成しなければならない親とクエリをキャッシュすることができますそれだけでない -Key<Parent> rootKey = ObjectifyService.factory().getKey(root)
ofy.query(ChildEntity.class).ancestor(rootKey)
は私が編集
サンプルDAO(validateメソッドを無視を追加しました以下のコメントの一つにとして
ありがとういくつかのヌル&量チェック):これが実行されたときは、このサンプルは、DAOから呼び出されたデリゲート内のすべての方法を見つけるさ
要求工場のServiceLocatorは現在
public List<EquipmentCheckin> findAll(Subject subject, Objectify ofy, Event event) {
final Business business = (Business) subject.getSession().getAttribute(BUSINESS_ATTRIBUTE);
final List<EquipmentCheckin> checkins = ofy.query(EquipmentCheckin.class).filter(BUSINESS_ATTRIBUTE, business)
.filter(EVENT_CONDITION, event).list();
return validate(ofy, checkins);
}
を使用して、私は、次のことが判明しますメソッドは実際に私のAbstractDAOで呼び出されています。
/**
*
* @param id
* @return
*/
public T find(Long id) {
System.out.println("finding " + clazz.getSimpleName() + " id = " + id);
return ObjectifyService.begin().find(clazz, id);
}
デバッグ中に私はクエリを実行するたびにfindメソッドが実際に呼び出されていることに気付きました。my findメソッドは単純にofy.begin()ですfind(clazz、id) - これはバックグラウンドを使用しているためですキャッシュされたエンティティを取得するか、クエリから呼び出されてからデータストアにまっすぐ進みますか?これはドキュメントにあります。「クエリ()はキャッシュされたエンティティインスタンスを返しますが、データストアへの(潜在的に高価な)呼び出しは引き続き行われます。 - 私はちょうどこれが実際に何を意味するのだろうかと思いますか?助けてくれてありがとう –
Objectify.find()はクエリではなくキーの取得です。 find()とget()の唯一の違いは、find()がnullを返し、エンティティが存在しないときにget()が例外をスローすることです。 – stickfigure
申し訳ありません - 私は実際に 'ofy.query(Type.class).filter(Filter.class)'を使用しているfindAllメソッドを実行すると間違っていると言わざるを得ないでしょう。 'キャッシュをバイパスすると期待していますが、 (私のlcoatorのもの - 単にofy.find(Type.class、id)である)に行く - docはキャッシュがバイパスされていると言っているが、私が呼び出すクエリはfindメソッドを使っているようだ - find()は舞台裏でget()を使用しているので、findは技術的にキャッシュに当てるべきだと思います。これは正しいと思いますか?私は途方もないかもしれませんか?私は本当に編集のコードを投稿します - ありがとうございました –