我正在使用Spring缓存API并遇到了问题: 我有一个带有CRUD操作的Dao类,我想做的就是缓存一个无参数的方法,它返回一个对象Map(Key-id,Value-entity)
class Dao implements IDao<Entity>{
public Map<Integer, Entity> getAllEntities(){ /* retreiving from DB */ }
public Entity getEntityByKey(Object key) { ... }
public void insert(Entity entity){...}
public void update(Entity entity){...}
public void delete(Entity entity){...}
}
任何人都可以告诉我如何准确地(并且正确地)缓存getAllEntities()方法来获取实体,缓存getEntityByKey以按键获取实体,还能够在执行创建,更新或删除操作时更新缓存? 更新后是否可以使用方法getAllEntities的可缓存版本(使用插入,更新,删除操作)?
答案 0 :(得分:0)
试试这个
class Dao implements IDao<Entity>{
@Cacheable(value = "entity.all")
public Map<Integer, Entity> getAllEntities(){ /* retreiving from DB */ }
@Cacheable(value = "entity.item", key="#p0")
public Entity getEntityByKey(Object key) { ... }
@CacheEvict(value = {"entity.all", "entity.item"}, allEntries=true)
public void insert(Entity entity){...}
@CacheEvict(value = {"entity.all", "entity.item"}, allEntries=true)
public void update(Entity entity){...}
@CacheEvict(value = {"entity.all", "entity.item"}, allEntries=true)
public void delete(Entity entity){...}
}