Hor*_*lea 2 java database spring caching
来自的示例:SpringSource
@Cacheable(value = "vets")
public Collection<Vet> findVets() throws DataAccessException {
return vetRepository.findAll();
}
Run Code Online (Sandbox Code Playgroud)
究竟如何findVets()工作?
这是第一次,它从中获取数据vetRepository并将结果保存在缓存中。但是,如果在数据库中插入了新的兽医,会发生什么?缓存是否会更新(即席即用的行为)?如果没有,我们可以将其配置为更新吗?
但是,如果从外部源(例如,使用同一数据库的应用程序)更新数据库,会发生什么?
@CacheEvict("vets")
public void save(Vet vet) {..}
Run Code Online (Sandbox Code Playgroud)
您必须告诉缓存对象是陈旧的。如果在不使用服务方法的情况下更改数据,那么您当然会遇到问题。但是,您可以使用以下命令清除整个缓存
@CacheEvict(value = "vets", allEntries = true)
public void clearCache() {..}
Run Code Online (Sandbox Code Playgroud)
它取决于缓存提供程序。如果另一个应用程序在不通知您的应用程序的情况下更新了数据库,但它使用了相同的缓存,则另一个应用程序也可能会更新缓存。
| 归档时间: |
|
| 查看次数: |
1729 次 |
| 最近记录: |