3

我正在使用 Spring 缓存 API,但遇到了一个问题:我有一个带有 CRUD 操作的 Dao 类,我想做的就是缓存一个无参数方法,它返回一个对象映射(键 - id,值 -实体)

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 的可缓存版本(使用操作插入、更新、删除)?

4

1 回答 1

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){...}

}
于 2012-07-09T11:52:35.417 回答