Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > hibernate 2level cache


Автор: gelo86 11.12.2010, 17:17
Почему неработает hibernate 2 level cache? В настроиках:

hibernate.cache.region.factory_class=net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory
hibernate.cache.use_second_level_cache=true

Код

getSession().persist(domain);
getSession().flush();
getSession().clear();

// Вот тут как я понимаю хибернат после селекта должен положыть в кеш данные
domain  = Domain.class.cast(getSession.get(Domain.class, domain.getId()));
getSession().flush();
getSession().clear();

// А тут как я понимаю хибернат должен уже брать данные с кеша
domain  = Domain.class.cast(getSession.get(Domain.class, domain.getId()));
getSession().flush();
getSession().clear();


В логах я вижу (после первого гета):
DEBUG  org.hibernate.engine.TwoPhaseLoad - adding entity to second-level cache: [ххх.Domain#155]
Но после второго гета я вижу, что хибернате обратно селектит с базы данных а в логах:
TRACE  org.hibernate.event.def.DefaultLoadEventListener - object not resolved in any cache: [ххх.Domain#155]

Почему пишет, что ложит данные в кеш, а потом их там неноходит?

Автор: gelo86 13.12.2010, 18:43
Я думал, много ответов получю smile Але впринципе, так как я делаю должно работать ?

Автор: MisterCleric 13.12.2010, 18:52
Конфиг EhCache в студию.
Думаю, у тебя какие-то проблемы с evictPolicy.
Да, а сущность помечена для кеширования?

Автор: gelo86 13.12.2010, 20:43
Код

<ehcache>
    <diskStore path="java.io.tmpdir/myapp" />

    <defaultCache maxElementsInMemory="10000"
        memoryStoreEvictionPolicy="LRU"
        timeToIdleSeconds="3600"
        timeToLiveSeconds="3600"
        overflowToDisk="false"
        diskPersistent="false"
        eternal="false">
    </defaultCache>
</ehcache>


для конфигурации использую spring:
Код

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"
                ....
        <property name="entityCacheStrategies">
            <props>
                <prop key="xxx.Domain">nonstrict-read-write</prop>
            </props>
        </property>


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)