Я включил кэширование 2-го уровня в 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");
к моей конфигурации 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>
и это для класса, который я хочу кэшировать
@Cacheable
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
Но как настроить размер кэша в коде при создании базы данных, егодля меня нецелесообразно использовать 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);
}
но как я могу повлиять на то, как они создаются, и достаточно ли изменить значения, как я сделал, чтобы обновить.Когда я запускаю, я не вижу отладки или чего-либо, что бы указывало на то, что используется кеш.