gpt4 book ai didi

java - Spring Cache - 只缓存一些表

转载 作者:行者123 更新时间:2023-11-30 03:11:45 26 4
gpt4 key购买 nike

我想在我的应用程序中缓存一些数据库表,因为表中的内容每天只更新一次。

我让 Spring Cache 像这样工作:

@Service("stuffManager")
public class StuffManagerImpl implements StuffManager {

@Autowired
private StuffDao stuffDao;

@Override
@Cacheable("stuffCache")
public List<Stuff> getAllStuff() {
return stuffDao.getAllStuff();
}
}

@Repository("stuffDao")
public class StuffDaoHibernate implements StuffDao {

@Override
public List<Stuff> getAllStuff() {
return getHQLResult("select* from Stuff", null);
}
}

但是,如果我的 getAllStuff 方法看起来像这样,但我只想缓存 Stuff 表,是否可以使用 Spring Cache?

@Repository("stuffDao")
public class StuffDaoHibernate implements StuffDao {

@Override
public List<Stuff> getAllStuff() {
return getHQLResult("select Stuff.* from Stuff inner join OtherStuff on Stuff.Id = OtherStuff.Id", null);
}
}

最佳答案

你不能这么做。 Spring 缓存“方法执行” - 当您调用方法时,Spring 检查键是否存在于缓存中并返回相应的值,否则调用该方法,数据将从数据库中提取,添加到缓存中并返回。当您将某个表与其他表连接时,就会在数据库中发生这种情况。

您无法使用 Spring Cache 在数据库中缓存表。仅从方法返回的值。

如果你想在内存中缓存一些数据库表,一些数据库提供了这样的功能,但你必须在数据库中执行此操作,而不是在服务器上。

关于java - Spring Cache - 只缓存一些表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33481342/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com