0

当使用 ehcache 而不是定义语句时

 <cache name="testonly.package.model.TestPOJOcategory"
        maxElementsInMemory="200"
        eternal="true"
        overflowToDisk="false"
        timeToIdleSeconds="300"
        timeToLiveSeconds="600"
    />

可以独立于我们使用的任何缓存提供程序直接定义内部实体吗?

@Cache(
  type=CacheType.SOFT, 
  size=64000 
  expiry=36000000,  
  coordinationType=CacheCoordinationType.INVALIDATE_CHANGED_OBJECTS 
)

参考:http : //wiki.eclipse.org/EclipseLink/Examples/JPA/Caching(它只显示 EclipseLink,不显示 ehcache)

4

2 回答 2

4

首先,即使大多数 JPA 持久性提供程序(如 Hibernate、EclipseLink...)都提供对二级缓存的支持,JPA 1.0 也没有指定对二级缓存的支持。因此,在使用 L2 缓存时,您实际上使用的是非标准的 JPA 扩展,并且不能从一个提供者移植到另一个提供者。Hibernate 的@Cache注解与 EclipseLink 的@Cache注解不一样,与 OpenJPA 的@DataCache注解没有可比性。所有这些都是不同的,它们是专有的。如果您使用的是 Hibernate(这是我对您之前问题的理解),您不应该查看 EclipseLink 专有的东西(或者仅针对您的文化,但如果我可以的话,这个问题超出了文化范围)。

二、是什么让你觉得EclipseLink的@Cache注解和EHCache有关系?AFAIK,EclipseLink 使用它自己的与 EHCache 无关的缓存实现。

其实,我有一种感觉,你在这里有点迷失了。你也许应该放慢速度,一步一步地做事:选择一个解决方案,坚持下去,确定你必须做什么,一件一件地实施,然后让整个事情发挥作用。专注于你的目标,暂时停止收集更多信息,花一些时间消化你学到的新东西。

于 2009-12-03T07:17:20.740 回答
2

据我所知,在 Hibernate 我们有这样的东西,

@Entity
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class TestPOJOcategory {
...
}

这个注解还有两个属性,regioninclude. 要设置大小、有效期和所有这些东西,我什么都不知道。我相信你应该考虑 EhCache 的文档。

于 2009-12-03T05:40:13.900 回答