Native EclipseLink:为某些实体启用二级缓存

时间:2017-07-12 15:02:17

标签: java caching eclipselink

在我们的项目中," old" EclipseLink的原生(非JPA)版本仍在使用中。使用Workbench Application(生成XML配置文件和一些Java代码)配置映射。

我们在工作台工具中看到的内容:对于所有实体,看起来缓存都是使用隔离级别Shared(默认)启用的。

我们在应用程序中看到的内容:没有实体被缓存

我们想要的是:仅为少数几个实体启用二级缓存

修改

EclipseLink Workbench中的配置:

enter image description here

生成的XML配置:

  [...]
  <refresh-cache-policy/>
  <caching-policy/>
  [...]

生成的项目代码:

    // ClassDescriptor Properties.
    descriptor.useSoftCacheWeakIdentityMap();
    descriptor.setIdentityMapSize(100);
    descriptor.useRemoteSoftCacheWeakIdentityMap();
    descriptor.setRemoteIdentityMapSize(100);
    descriptor.setReadOnly();
    descriptor.setAlias("SomeAlias");

    // Cache Invalidation Policy
    TimeToLiveCacheInvalidationPolicy policy = new TimeToLiveCacheInvalidationPolicy(1000);
    policy.setShouldUpdateReadTimeOnUpdate(false);
    descriptor.setCacheInvalidationPolicy(policy);

    // Query Manager.
    descriptor.getQueryManager().checkCacheForDoesExist();

1 个答案:

答案 0 :(得分:0)

目前,我们的解决方法是使用ehcache和Spring来缓存方法调用。

一旦我们可以转向JPA,我们可能会使用ehcache,所以这不是那么糟糕,我想。