[英]Ehcache and Hibernate
我有一种情况,我正在显示数据库中的数据,该数据使用Spring MVC在网页上经常更改(由外部应用程序更改),有点类似于库存监视应用程序。 目前,我正在使用一个守护程序线程,该线程在Web容器启动时启动,每45秒查询一次数据库并将数据存储在应用程序范围的hashmap对象中。 然后,Web应用程序从哈希图(而不是数据库)读取数据以显示数据。
我已经阅读了有关第三方缓存API的信息,例如Ehcache和OSCache 。 我已经阅读了有关Ehcache的文档,似乎可以使用Hibernate查询缓存技术代替守护线程了。
现在我的查询(如果我使用休眠模式并启用查询缓存并将timetoidle设置为45秒)将自动刷新缓存中的数据以反映数据库中的最新数据,还是我需要强制刷新(再次查询数据库并重新填充缓存)?缓存,您还能解释什么是自填充缓存。
在Ehcache文档中 , SelfPopulatingCache
被描述为:
Ehcache的自填充装饰器,可按需创建条目。
这意味着当向SelfPopulatingCache
请求一个值并且该值不在缓存中时,它将为您创建该值。 这篇博客文章提供了很多细节和代码(包括自动更新)。
对我来说,听起来最适合您的需求是Ehcache SelfPopulatingCache
。 因此,我建议您仔细看看。
据我所知,Hibernate 2级缓存肯定会帮助提高系统性能,但不能解决您的问题。 使用Ehcache并设置timeToIdleSeconds
时确实如此,缓存在该时间之后过期,但不会自动刷新。
查询缓存不会在缓存中缓存实际实体的状态。 它仅缓存标识符值和值类型的结果。 因此,对于那些预期作为查询结果缓存的一部分进行缓存的实体,查询缓存应该始终与二级缓存结合使用(就像集合缓存一样)。
最后,OSCache已过时。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.