当使用 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)

有帮助吗?

解决方案

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

其次,是什么让您认为 EclipseLink 的 @Cache 注释和EHCache有什么关系?AFAIK,EclipseLink 使用自己的 缓存实现 与EHCache无关。

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

其他提示

据我所知,在Hibernate中,我们有这样的事情,

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

注释有两个多个属性,regioninclude。设置大小,有效期和所有这些事情,我不知道任何事情。你应该考虑的Ehcache的文档,我相信了。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top