我正在使用捆绑了EHCache 1.5的Hibernate 3.5.1。

如果我想使用最新的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>

那行得通吗?一些文档似乎暗示为每个映射的类创建一个单独的区域/缓存...

谢谢。

最佳答案

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

根据有关将Ehcache用作Hibernate Second Level Cache的Ecache文档,您确实必须使用ehache-core.jar,还必须更改Hibernate's configuration

另外-Hibernate映射文件中的缓存“区域”与ehcache配置xml中的缓存“名称”是否相同?

是。同样,请参考文档,这在Configuring ehcache.xml中进行了说明。

那行得通吗?一些文档似乎暗示为每个映射的类创建一个单独的区域/缓存

该文档并不暗示,它在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 - HIbernate 3.5.1-我可以直接放入EHCache 2.0.1吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2703933/

10-11 21:36