hibernate缓存:hibernate 3.3采用新的缓存Cache思路方法

  今天查看hibernate cache接口时 svn了hibernate3.3源码

  打开CacheProvider类看 居然给 @deprecated

  真是大块人心

  早就对hibernate 2级缓存Cache和查询缓存Cache不爽

  只能按照实体配置 不能针对某条查询语句设置

  3.3提供了两个接口 Region  RegionFactory 来代替 3.2中Cache CacheProvider

  看看RegionFactory 实现吧

  看看这几个思路方法名字是多么让人激动

  Java代码    

buildCollectionRegion 对集合缓存Cache 猜测是对对多集合进行配置吧 
buildQueryResultsRegion 查询缓存Cache 自定义查询 也可以有自己region了 
buildTimestampsRegion  给缓存Cache设置过期时间吧 


  英文不好 猜测 英文好可以翻译

  在gg上搜索了下hibernate RegionFactory 关键字 居然没搜索到

  难道大家对个功能都不感冒

  Java代码   

public erface RegionFactory { 
 
 public void start(Settings tings, Properties properties) throws CacheException; 
 
 public void stop; 
 
 public boolean isMinimalPutsEnabledByDefault; 
 
 public long nextTimestamp; 
 
 public EntityRegion buildEntityRegion(String regionName, Properties properties, CacheDataDescription metadata) throws CacheException; 
 
 public CollectionRegion buildCollectionRegion(String regionName, Properties properties, CacheDataDescription metadata) throws CacheException; 
 
 public QueryResultsRegion buildQueryResultsRegion(String regionName, Properties properties) throws CacheException; 
 
 public TimestampsRegion buildTimestampsRegion(String regionName, Properties properties) throws CacheException; 
} 


  附上hibernate3.3 cache包里介绍说明

  引用

  This package s APIs/SPIs and implementations for the Hibernate second-level cache.

  The legacy (and now deprecated) approach to caching is d by the {@link org.hibernate.cache.CacheProvider} and {@link org.hibernate.cache.Cache} erfaces as well as the {@link org.hibernate.cache.CacheConcurrencyStrategy} erface along with the various implementations of all these erfaces. In that scheme, a {@link org.hibernate.cache.CacheProvider} d how to configure and perform lecycle operations in regards to a particular underlying caching library; it also d how to build {@link org.hibernate.cache.Cache} instances which in turn d how to access the "regions" of the underlying cache instance. For entity and collection data cache regions, {@link org.hibernate.cache.CacheConcurrencyStrategy} wrapped access to those cache regions to apply transactional/concurrent access semantics.

  The improved approach is based on {@link org.hibernate.cache.RegionFactory}, the various {@link org.hibernate.cache.Region} specializations and the two access strategies contracts ({@link org.hibernate.cache.access.EntityRegionAccessStrategy} and {@link org.hibernate.cache.access.CollectionRegionAccessStrategy}). The general approach here is that {@link org.hibernate.cache.RegionFactory} d how to configure and perform lecycle operations in regards to a particular underlying caching library (or libraries). {@link org.hibernate.cache.RegionFactory} also s how to build specialized {@link org.hibernate.cache.Region} instances based on the type of data we will be storing in that given region. The fact that {@link org.hibernate.cache.RegionFactory} is asked to build specialized regions (as opposed to just general access) is the first improvement over the legacy scheme. The second improvement is the fact that the regions (well the ones like entity and collection regions that are responsible for storing {@link org.hibernate.cache.TransactionalDataRegion transactional} data) are asked to build their own access strategies (see {@link org.hibernate.cache.EntityRegion#buildAccessStrategy} and {@link org.hibernate.cache.CollectionRegion#buildAccessStrategy}).

Tags:  hibernate清除缓存 hibernate缓存配置 hibernate二级缓存 hibernate缓存

延伸阅读

最新评论

发表评论