Spring 二级缓存-相关实体上的智能逐出
我对缓存相当陌生,想问一个简单的问题: 假设我有以下类实体:Spring 二级缓存-相关实体上的智能逐出,spring,hibernate,caching,ehcache,Spring,Hibernate,Caching,Ehcache,我对缓存相当陌生,想问一个简单的问题: 假设我有以下类实体: @Entity public class Player { @OneToOne private Secret secret; } 现在,假设我正在缓存Entite Secret和Player。 现在,让我们假设我这样做: player.getSecret().setValue("no secrets"); // lets say this secret id == 2 playerRepository.save(p
@Entity
public class Player {
@OneToOne
private Secret secret;
}
现在,假设我正在缓存Entite Secret和Player。
现在,让我们假设我这样做:
player.getSecret().setValue("no secrets"); // lets say this secret id == 2
playerRepository.save(player);
第二级缓存是否足够聪明,可以在id==2的条目中退出名为Secret的缓存
二级缓存是否有一些我应该注意的限制?它是否可以在不改变我的web应用的情况下插入?在这种情况下,如果使用正确的缓存并发策略,它将自动确定对象何时过时 关于陷阱的问题,设置缓存时需要注意以下几点,第一次看到它们时可能会感到惊讶: 默认情况下,仅缓存按Id加载的实体,如果要缓存查询结果,还需要添加查询缓存 如果要将一对多缓存到集合,则需要独立地注释关联,因为默认情况下关联不会被缓存
有关这两个缓存的详细信息,请参阅本文:Yes。你为什么不试试呢?我编辑了我的帖子,我试图用一种更一般化的方式询问二级缓存的陷阱二级缓存几乎是透明的。我所知道的唯一缺陷是,如果其他一些进程更新了数据库,缓存显然不会注意到它,并且除非在我遇到该错误时已修复,否则某些连接回迁并不总是有效。由查询加载的实体也会被缓存,但只有通过ID找到它们,缓存才会被命中。