1

JBossCacheをJPA/Hibernateの第2レベルのキャッシュプロバイダーとして使用して、繰り返し呼び出されるクエリをキャッシュしようとしています。クエリは特定のタイプのエンティティを返します。それをFooTypeと呼びましょう。

FooTypeは次のようになります。

@Entity(name = FooType)
@Cache(usage = CacheConcurrencyStrategy.TRANSACTIONAL)
public class FooType {
   protected BarType barType;

   @ManyToOne(targetEntity = BarType.class, cascade = {
       CascadeType.ALL
   })
   BarType getBarType() {
       return barType;
   }
}

したがって、Footypeには多対1の関連付けがあります。さて、クエリを呼び出すと、ごくわずかな部分だけがキャッシュに入れられているようです。その理由は、@Cacheタグとの関連付けをマークしなかったためだと思います。私は正しいですか?

しかし、本当の問題は次のとおりです。

BarTypeにはいくつかの関連付けもあり、これらは関連付けなども提供するオブジェクトを返し、関連付けの大きなグラフを作成します。今、私はする必要がありますか

a)これらのクラスすべてに注釈を付けて

b)関連付けにも注釈を付ける

クエリ全体をキャッシュするために?

4

1 に答える 1

1

キャッシュしたいすべてのエンティティ/コレクションには、キャッシュできるように @Cache が必要です。クエリ キャッシュの動作は少し異なります。結果をキャッシュするには、クエリ オブジェクトをキャッシュ可能にする必要があります。

ところで、いつものように、実際に意味がある場合はキャッシュしてください!

http://docs.jboss.org/hibernate/core/3.5/reference/en/html/performance.html#performance-cache

于 2011-07-29T07:45:48.660 に答える