我正在使用Spring Cache,在那裏我傳入一組鍵,而返回的是實體列表。我希望緩存框架明白返回列表中的每個元素都要與相應的代碼一起緩存。目前看來,關鍵是整個列表,如果我在後續調用中丟失了一個鍵,它會嘗試重新加載整個集合。收集物品/實體的Spring Cache
@Override
@Cacheable(value = "countries")
public List<Country> getAll(List<String>codes) {
return countryDao.findAllInCodes(codes);
}
另一種可能性是,返回的是一個地圖,同樣我想緩存足夠聰明,只查詢未曾被前詢問項目,也對它們進行緩存,其關鍵的每個項目。
@Override
@Cacheable(value = "countries")
public Map<String,Country> getAllByCode(List<String>codes) {
return countryDao.findAllInCodes(codes);
}
假設全國類看起來是這樣的:
class Country{
String code;
String fullName;
long id;
... // getters setters constructurs etc..
}
這可能與春季緩存?
爲什麼不使用第二級JPA?與EhCache相比,Spring緩存實際上是無可奈何且容易出錯的,用於緩存。 – davidxxx
@davidxxx就我所知,Spring Cache只是一個抽象,而EhCache可以在下面實現。不同之處在於它不需要在註釋之外編寫任何緩存邏輯。我如何用JPA編寫上面的代碼? – Charbel