在我们的项目中," old" EclipseLink的原生(非JPA)版本仍在使用中。使用Workbench Application(生成XML配置文件和一些Java代码)配置映射。
我们在工作台工具中看到的内容:对于所有实体,看起来缓存都是使用隔离级别Shared(默认)启用的。
我们在应用程序中看到的内容:没有实体被缓存
我们想要的是:仅为少数几个实体启用二级缓存
修改
EclipseLink Workbench中的配置:
生成的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();
答案 0 :(得分:0)
目前,我们的解决方法是使用ehcache和Spring来缓存方法调用。
一旦我们可以转向JPA,我们可能会使用ehcache,所以这不是那么糟糕,我想。