Bean 缓存

要启用 Bean 缓存,我们将 @Cache 注释添加到实体 Bean 类型。

@Cache
@Entity
public class Customer {
 ...
}

自然键

我们使用 naturalKey 属性来定义一个可用的 自然唯一键

然后,Ebean 将自动维护一个自然键查找缓存,并将其与在 where 表达式中使用自然键属性的查询一起使用。

@Cache(naturalKey = "email")
// Multiple properties make up the unique natural key
@Cache(naturalKey = {"store","sku"})

隐式使用

如果在 Bean 上定义了 @Cache,则 Ebean 将自动尝试使用 L2 Bean 缓存。

@Cache
@Entity
public class Country
// automatically use the cache
Country country = DB.find(Country.class,"NZ");

// references automatically use the cache too
Country countryRef = DB.reference(Country.class,"NZ");

// hit the country cache automatically via navigation
// ... and lazy loading
Customer customer = DB.find(Customer.class, 1);
Address billingAddress = customer.getBillingAddress();
Country c2 = billingAddress.getCountry();

显式

我们可以通过 query.setUseCache() 显式指定使用 Bean 缓存,对于 Bean 缓存,我们可以指定何时不希望使用缓存。

// explicitly state we do not want to use the bean cache
Customer customer = DB.find(Customer.class)
  .setUseCache(false)
  .setId(7)
  .findOne();

近缓存

要启用使用 ebean-redis 时的近缓存,请设置 nearCache=true。要启用与 Hazelcast 或 Ignite 的近缓存,我们改用它们特定的 Hazelcast | Ignite 配置。

@Cache(nearCache=true)
@Entity
public class Country

使用上述方法,在使用 ebean-redis 时,命中 Bean 缓存的查询将首先尝试进程内近缓存,仅在数据不在本地近缓存中时才命中 Redis。