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。