Прежде всего, помните, что Hibernate по умолчанию не использует никакой провайдер кеша.Итак, вам понадобится «внешний» провайдер кеша для кеша Hibernate 2L.Для ответа я буду использовать ehcache и Hibernate 3.3.Обратите внимание, что конфигурация была изменена в более поздних версиях Hibernate, поэтому прочитайте документы для точной версии, которую вы используете.
В вашей конфигурации Hibernate вы пропустили одну часть, которая указывает Hibernate на фактического поставщика,Свойство hibernate.cache.provider_class
делает это для Hibernate 3.3.Установите для него значение net.sf.ehcache.hibernate.SingletonEhCacheProvider
Теперь вам также понадобится файл ehcache.xml, например:
<?xml version="1.0" encoding="UTF-8"?>
<ehcache>
<diskStore path="./cache" />
<defaultCache maxElementsInMemory="10000"
eternal="true"
overflowToDisk="true"
diskPersistent="true"
diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="FIFO" />
<cache name="com.mycompany.jpa.MyEntity"
maxElementsInMemory="50"
overflowToDisk="true" />
<cache name="org.hibernate.cache.StandardQueryCache"
maxElementsInMemory="50"
overflowToDisk="true" />
<cache name="org.hibernate.cache.UpdateTimestampsCache"
maxElementsInMemory="5000"
overflowToDisk="true" />
</ehcache>
Вы не показывали свой DAO, поэтому яне уверен, что это правильно или нет.Обратите внимание, что вы всегда должны быть откровенны с кешем, так как он предназначен для использования решения для конкретных мест, а не общего решения для всего.Это означает, что в вашем DAO вы бы добавили подсказку к запросу, указав, что ваш запрос кешируется (из вашего теста кажется, что вам нужен кеш запросов, а не только кеширование сущностей).
Если вы все еще не можете заставить его работать, см. Приложение в следующей JIRA.Он содержит проект maven с включенным кэшем, поэтому вы можете сравнить его с вашим кодом:
https://issues.jboss.org/browse/JBPAPP-4224