如何将ehcache自填充缓存实现为hibernate二级缓存

时间:2011-11-22 08:51:29

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

我只是将 Ehcache自填充缓存作为 hibernate二级缓存进行探索。

hibernate是否支持自填充缓存? 任何人都可以帮我找到与此主题相关的一些示例实现/文档吗?

2 个答案:

答案 0 :(得分:1)

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

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

长话短说,我认为你最好让Hibernate自己处理Cache的并发访问(由缓存访问策略控制),因为那里的任何东西都不是真正意味着用户要做的......

答案 1 :(得分:0)

来自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>