Java Spring缓存-仅缓存一些表
我想在我的应用程序中缓存一些数据库表,因为表中的内容每天只更新一次 我让Spring Cache像这样工作:Java Spring缓存-仅缓存一些表,java,spring,spring-cache,Java,Spring,Spring Cache,我想在我的应用程序中缓存一些数据库表,因为表中的内容每天只更新一次 我让Spring Cache像这样工作: @Service("stuffManager") public class StuffManagerImpl implements StuffManager { @Autowired private StuffDao stuffDao; @Override @Cacheable("stuffCache") public List<Stuf
@Service("stuffManager")
public class StuffManagerImpl implements StuffManager {
@Autowired
private StuffDao stuffDao;
@Override
@Cacheable("stuffCache")
public List<Stuff> getAllStuff() {
return stuffDao.getAllStuff();
}
}
你不能那样做。Spring缓存“方法执行”——当您调用该方法时,Spring会检查该键是否存在于缓存中并返回相应的值,否则调用该方法时,数据将从数据库中提取,添加到缓存中并返回。当您将某个表与另一个表联接时,这种情况会在数据库中发生 不能使用Spring缓存在数据库中缓存表。只有从方法返回的值
如果您想在内存中缓存某些数据库表,某些数据库提供了此类功能,但您必须在数据库中而不是在服务器上进行此操作。1.使用@Cacheable annotation注释的方法应该具有方法args,以便您下次可以使用arg value作为键2进行检索。SpringCache提供了在底层缓存中存储java对象的抽象。如何填充java对象取决于您。@AmitParashar您能澄清一下这是如何解决我的问题的吗?
@Repository("stuffDao")
public class StuffDaoHibernate implements StuffDao {
@Override
public List<Stuff> getAllStuff() {
return getHQLResult("select* from Stuff", null);
}
}
@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);
}
}