java – HIbernate 3.5.1 – 我可以直接使用EHCache 2.0.1吗?

我正在使用Hibernate 3.5.1,它附带了EHCache 1.5.

如果我想使用最新的EHCache版本(2.0.1),是否只需要从我的项目中删除ehcache-1.5.jar,并用ehcache-core-2.0.1.jar替换?有什么问题要注意吗?

另外 – 是Hibernate映射文件中的缓存“区域”,与ehcache配置xml中的缓存“名称”相同吗?我想要做的是定义2个命名缓存区域 – 一个用于不会更改的只读引用实体(查找列表等),另一个用于所有其他实体.所以在ehcache中我想定义两个元素;

<cache name="readonly"> ... </cache>
<cache name="mutable"> ... </cache>

然后在我的Hibernate映射文件中,我将指定用于每个实体的缓存:

<hibernate-mapping>
    <class name="lookuplist">
        <cache region="readonly" usage="read-only"/>
        <property> ... </property>
    </class>
</hibernate-mapping>

那会有用吗?一些文档似乎暗示为每个映射类创建一个单独的区域/缓存…

谢谢.

解决方法:

If I want to use the latest EHCache release (2.0.1), is it just a matter of removing the ehcache-1.5.jar from my project, and replacing with ehcache-core-2.0.1.jar? Any issues to be aware of?

根据关于使用Ehcache作为Hibernate Second Level Cache的Ecache文档,您必须使用ehache-core.jar,但也要更改Hibernate’s configuration.

Also – is a cache “region” in the Hibernate mapping file that same as a cache “name” in the ehcache configuration xml?

是.再次参考文档,这将在Configuring ehcache.xml中解释.

Will that work? Some of the documentation seems to imply that a separate region/cache gets created for each mapped class

文档并不意味着,它在Cache mappings中写成黑色,这是默认值:

region (optional: defaults to the class or collection role name): specifies the 
name of the second level cache region 

它会起作用吗?从技术上讲,是的.这是个好主意吗?我不确定. IMO最好在Hibernate和Ehcache级别都有更细粒度的区域(特别是如果你打算使用分布式缓存和失效策略,你当然不希望使所有实体无效).我会使用Hibernate的默认值.

上一篇:java – Ehcache分布式多通道


下一篇:java – EhCache:复制与分布式缓存配置