2014-02-06 3 views
1

Я попытался включить кэш запросов без удачи в JBoss 7.1.1 Я добавил это в коде:Как включить кэш запросов в JBoss 7.1.1

TypedQuery<Currency> query = entityManager.createNamedQuery("getCurrency",Currency.class); 
query.setParameter("code", code); 
query.setHint("javax.persistence.cache.storeMode", CacheStoreMode.REFRESH); 
query.setHint("javax.persistence.cache.retrieveMode", CacheRetrieveMode.USE); 
query.setHint("org.hibernate.cacheable", true); 

namedQuery выглядит следующим образом:

@Cacheable 
@Entity 
@Table(name = "currency") 
@NamedQuery(
    name = "getCurrency", 
    query = "FROM Currency c WHERE c.iso4217code = :code" 
) 

у меня в persistence.xml следующее:

<persistence-unit name="cache_persistence"> 
    <provider>org.hibernate.ejb.HibernatePersistence</provider> 

    <jta-data-source>java:jboss/datasources/cache</jta-data-source> 
    <class>com.unwire.cache.model.CacheTest</class> 
    <shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode> 
    <properties> 
    <property name="hibernate.show_sql" value="false" /> 
    <property name="hibernate.hbm2ddl.auto" value="none" /> 
    <property name="hibernate.cache.use_second_level_cache" value="true"/> 
    <property name="hibernate.cache.use_query_cache" value="true"/> 
    <property name="hibernate.generate_statistics" value="true"/> 
    </properties> 

</persistence-unit> 

Когда я запускаю военный файл на сервере Субъект получает в кэше, но кэш запросов никогда не используется

Я загрузил файл здесь: http://www.filedropper.com/cachetest

ответ

1

В моем коде (архив уха, но это не должно иметь значение) У меня просто:

query.setHint("org.hibernate.cacheable", true); 
query.setHint("org.hibernate.cacheMode", "NORMAL"); 

и

<shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode> 
    <properties> 
    <property name="hibernate.cache.use_second_level_cache" value="true"/> 
    <property name="hibernate.cache.use_query_cache" value="true"/> 
    <property name="hibernate.generate_statistics" value="true" /> 
</properties> 

и без каких-либо дополнительных вещей (как есть), и это работает. Конечно, вы должны проверить кэширование по тем же параметрам для запроса.

+0

Хорошо, я попробовал org.hibernate.cacheable как единственный намек. no luck – Lars

+0

Как вы можете проверить, работает ли это или нет? –

+0

Я запускаю файл войны с правильным источником данных и таблицами. И выполните http: // localhost: 8080/cachetest/1, который теперь выглядит для DKK в таблице валют. Может видеть, что этот SQL вызывается каждый раз. – Lars

Смежные вопросы