Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring缓存-仅缓存一些表_Java_Spring_Spring Cache - Fatal编程技术网

Java Spring缓存-仅缓存一些表

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

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

我让Spring Cache像这样工作:

@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);
    }
}