我正在使用ehcache来使用hibernate缓存实体。
查看ehcache监视器,一切似乎都正常工作(刷新缓存计数为零,并重新加载put count在一个),但如果我直接在db上重新加载某个值并重新加载,则显示更新的值而不是缓存的。我不知道这是否是预期的行为,但作为一个缓存,这将是奇怪的。
我已经尝试了解决这个问题的所有解决方案都没有成功。
答案 0 :(得分:0)
这是预期的行为。数据库是缓存所在的所有正确数据的来源,以加快对数据库中数据的访问。如果数据不同,则根据定义缓存是错误的。
因此,如果您重新加载缓存,则会从数据库重新加载。
如果通过Hibernate保存数据,则数据将写入缓存和数据库。当您有多个线程/进程读取或写入时,可能会出现问题。有关如何管理此内容,请参阅caching strategies in the Hibernate documentation
通常,直接更新数据库会导致缓存无法获得正确的数据,除非通知它必须使其拥有的数据无效和/或从数据库重新加载。