私はSpring Cacheの新機能で、Springキャッシュの実装としてEhcacheを使用しています。
私は次のパターンについて知りたいと思います:どちらが優れていて、なぜですか?Spring Cacheでは、どのようにキャッシュとキーを設計する必要がありますか?
パターン1:多くの異なるクラスは、異なるキープレフィックスを持つ同じキャッシュを使用します。
@Cacheable(cacheNames = "myCache", key = "'user:'+#id")
public User findOne(int id) {
return...
}
@Cacheable(cacheNames = "myCache", key = "'post:'+#id")
public Post findOne(int id) {
return...
}
パターン2:すべてのクラスは独自のキャッシュを持っています。
@Cacheable(cacheNames = "users", key = "#id")
public User findOne(int id) {
return...
}
@Cacheable(cacheNames = "posts", key = "#id")
public Post findOne(int id) {
return...
}
パターン2では、ehcache.xmlに多くの<cache/>
を設定する必要があります。
キャッシュが重量コンポーネントであるかどうかわかりません。
多くのキャッシュを作成するとパフォーマンスが低下しますか?
どちらもしないでください。 JPAプロバイダの第2レベルのキャッシュをバイパスしようとしているようです。 Springキャッシングの代わりにそれを使用することを強くお勧めします。 –
@ M.Deinum、私は、上記の例は、第2レベルのキャッシュでJPAを使用する場合には適していないことを知っています。 上記のメソッドにはJPAを呼び出すだけでなく、より多くの論理演算があると考えることができます。また、戻り値はJPAエンティティではない可能性があります。 – xzchaoo