【问题标题】:How to implement ehcache self populating cache as hibernate second level cache如何将ehcache自填充缓存实现为休眠二级缓存
【发布时间】:2012-01-03 16:17:41
【问题描述】:

我只是在探索 Ehcache 自填充 缓存作为休眠二级缓存

hibernate 是否支持自填充缓存?
谁能帮我找到一些与该主题相关的示例实现/文档?

【问题讨论】:

标签: java hibernate caching ehcache second-level-cache


【解决方案1】:

VamsiKrishna, 我不太确定你想在这里实现什么,但我想你想避免两个线程从数据库加载同一个实体。现在,恐怕你无法做到这一点。首先,Hibernate 不在缓存中存储实体,而是对这些实体进行脱水表示。创建这些然后放置它们以便 Ehcache 层可以处理它们(它们可能会重新包装在一些其他内部类型 iirc 中),我认为这是不可能的(类型可访问性将是一个问题)。

此外,您可以使用 BlockingCache 来模拟行为并让 Hibernate 填充缓存。问题在于,如果我没记错的话,Hibernate 不会将空值放入缓存中。不这样做最终会锁定您的整个缓存。

长话短说,我认为你最好让 Hibernate 自己处理对缓存的并发访问(由缓存访问策略控制),因为其中没有任何东西真正意味着用户可以做......

【讨论】:

    【解决方案2】:

    来自 ehcache 网站 - http://www.ehcache.org/documentation/user-guide/hibernate#Configure-Ehcache-as-the-Second-Level-Cache-Provider

    在hibernate.cfg.xml中添加

    <property name="hibernate.cache.region.factory_class">net.sf.ehcache.hibernate.EhCacheRegionFactory</property>
    

    【讨论】:

    • 您好 Vivek,感谢您的回复。您给出的参考是常规 ehcache 作为休眠二级缓存,但在这里我正在寻找 ** selfpopulating cache ** 作为二级缓存。
    猜你喜欢
    • 2010-10-20
    • 2010-11-26
    • 2023-03-03
    • 2015-04-24
    • 1970-01-01
    • 2017-07-05
    • 2011-07-08
    • 1970-01-01
    相关资源
    最近更新 更多