Pau*_*lor 6 hibernate ehcache hibernate-4.x
我通过添加以下内容在Hibernate 4.3.11中启用了二级缓存:
config.setProperty("hibernate.cache.region.factory_class", "org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory");
config.setProperty("hibernate.cache.use_second_level_cache", "true");
Run Code Online (Sandbox Code Playgroud)
到我的Hibernate配置.
这到我的pom.xml(不确定pom定义是否有必要这个尴尬)
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-ehcache</artifactId>
<version>4.3.11.Final</version>
<exclusions>
<exclusion>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>2.7.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
这到我要缓存的类
@Cacheable
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
Run Code Online (Sandbox Code Playgroud)
但是如何在创建数据库时在代码中配置缓存大小,对我来说使用Xml文件是不实际的,这只会增加构建过程的复杂性,我更喜欢在代码中执行.
从Hibernate创建数据库后更新,我发现已经创建了缓存
CacheManager.create();
String[] cacheNames = CacheManager.getInstance().getCacheNames();
for(String cacheName:cacheNames)
{
MainWindow.logger.severe("CacheName:"+cacheName);
Cache cache = CacheManager.getInstance().getCache(cacheName);
cache.getCacheConfiguration().setMaxEntriesInCache(1000);
cache.getCacheConfiguration().setLogging(true);
}
Run Code Online (Sandbox Code Playgroud)
但是我怎么能影响它们的创建方式,或者像我所做的那样修改值就足以更新了.当我运行时,我看到没有调试outout或任何表明正在使用缓存的东西.
您可以子类化org.hibernate.cache.ehcache.EhCacheRegionFactory并手动执行任何缓存配置,然后告诉 Hibernate 使用您的自定义缓存工厂:
Configuration.setProperty("hibernate.cache.region.factory_class", "my.cache.FactoryClass");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
239 次 |
| 最近记录: |