Ich bin neu in Spring Cache und mit Ehcache als Spring Cache-Implementierung.
Ich möchte über die folgenden Muster wissen: welcher ist besser und warum?Spring Cache, wie soll ich die Caches und Schlüssel entwerfen?
Muster 1: viele verschiedene Klassen verwenden den gleichen Cache mit unterschiedlichen Schlüsselpräfixen.
@Cacheable(cacheNames = "myCache", key = "'user:'+#id")
public User findOne(int id) {
return...
}
@Cacheable(cacheNames = "myCache", key = "'post:'+#id")
public Post findOne(int id) {
return...
}
Muster 2: Jede Klasse hat einen eigenen Cache.
@Cacheable(cacheNames = "users", key = "#id")
public User findOne(int id) {
return...
}
@Cacheable(cacheNames = "posts", key = "#id")
public Post findOne(int id) {
return...
}
Mit Muster 2, muss ich viele <cache/>
in meinem ehcache.xml konfigurieren.
Ich weiß nicht, ob Cache eine schwergewichtige Komponente ist oder nicht?
Erstellen viele Caches schädlich für die Leistung?
Tun Sie auch nicht. Offenbar versuchen Sie, das Second-Level-Caching Ihres JPA-Anbieters zu umgehen. Ich würde dringend empfehlen, das anstelle von Spring Caching zu verwenden. –
@ M.Deinum, ich weiß, die obigen Beispiele sind nicht geeignet, wenn JPA mit dem Second-Level-Caching verwendet wird. Sie können davon ausgehen, dass die oben genannten Methoden mehr logische Operationen haben und nicht nur Aufrufe an JPA haben. Und der Rückgabewert darf keine JPA-Entität sein. – xzchaoo