使用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)
答案 0 :(得分:4)
首先,即使大多数JPA持久性提供程序(如Hibernate,EclipseLink,...)提供对二级缓存的支持,JPA 1.0仍然不指定对二级缓存的支持。因此,在使用L2缓存时,您实际上正在使用非标准的JPA扩展,并且无法从一个提供程序移植到另一个提供程序。 Hibernate的@Cache
注释与EclipseLink的@Cache
注释不同,并且与OpenJPA的@DataCache
注释不具有可比性。所有这些都是不同的,它们是专有的。如果您正在使用Hibernate(这是我对您之前的问题的理解),您不应该查看EclipseLink专有的东西(或者仅针对您的文化,但如果可能的话,这个问题超出了文化范围。)
第二,是什么让你认为EclipseLink的@Cache
注释与EHCache有关? AFAIK,EclipseLink使用自己的cache implementation,它与EHCache无关。
实际上,我觉得你在这里有点迷失。你可能应该放慢脚步,一步一步地做事:选择一个解决方案,坚持下去,确定你必须做什么,逐个实现,然后让整个事情发挥作用。专注于你的目标,暂时停止收集更多信息,花一些时间来消化你所学到的新东西。
答案 1 :(得分:2)
据我所知,在Hibernate中我们有类似的东西,
@Entity
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class TestPOJOcategory {
...
}
此annotation还有两个属性,region
和include
。设置大小,到期和所有这些事情,我什么都不知道。我相信你应该考虑EhCache的文档。