配置Entity beans为缓存

配置Entity beans为缓存
你用正常方式定义你的 entity bean 类。JBoss EJB 3.0 将来的版本将支持 annotating entities 和所缓存的它们的关系的集合,但是现在你不得不直接配置底层的 hibernate 引擎。让我们看看通过可选的property元素配置 hibernate 缓存选项的persistence.xml文件。下面persistence.xml 里的定义缓存的元素应该被启用:
<!-- Clustered cache with TreeCache -->
< property name ="cache.provider_class" >
org.jboss.ejb3.entity.TreeCacheProviderHook
</ property >
 
下面的属性元素定义了所使用的缓存对象名和 MBean 名。
< property name ="treecache.mbean.object_name" >
jboss.cache:service=EJB3EntityTreeCache
</ property >
 
下一步我们需要配置 entities 被缓存的内容。就像上面所展示的样,缺省是什么都不缓存。我们使用@Cache 注解来标记需要缓存的 entity beans。
@Entity
@Cache(usage=CacheConcurrencyStrategy.TRANSACTIONAL)
public class Customer implements Serializable {
// ... ...
}
 
    一个简单的原则就是,你应该对很少变动和频繁使用的对象进行缓存.你可以在ejb3-entity-cache-service.xml配置文件里为每个 entity bean 微调缓存设置。例如,你可以指定缓存的大小。如果缓存里的对象太多,缓存有可能挤掉最老的对象(或者最少用的对象,依你的配置而定)来给新对象留出空间。mycompany.Customer entity bean 的缓存区(cache region)是/mycompany/Customer。
< server >
< mbean code ="org.jboss.cache.TreeCache"
name ="jboss.cache:service=EJB3EntityTreeCache" >
< depends >jboss:service=Naming
< depends >jboss:service=TransactionManager
... ...
< attribute name ="EvictionPolicyConfig" >
< config >
< attribute name ="wakeUpIntervalSeconds" >5 </ attribute >
< region name ="/_default_" >
< attribute name ="maxNodes" >5000 </ attribute >
< attribute name ="timeToLiveSeconds" >1000 </ attribute >
</ region >
< region name ="/mycompany/Customer" >
< attribute name ="maxNodes" >10 </ attribute >
< attribute name ="timeToLiveSeconds" >5000 </ attribute >
</ region >
... ...
</ config >
</ attribute >
</ mbean >
</ server >
如果你没有为 entity bean 类指定缓存区(cache region),这个类的所有实例将象上面定义的一样缓存在/_default区里。EJB3 Query API 提供了让你在指定的缓存区里保存或载入查询结果(就是 entity beans 的集合)的方法。

你可能感兴趣的:(配置Entity beans为缓存)