5

クエリ (ルックアップ) がキャッシュされたセッションを閉じた後、新しいセッションで、ランダム書き込み Sql クエリを使用して DB を変更した後、休止状態がすべてを削除します。めったに変わらないものに対するポリシーの作成を検討しています。

INFO    Executing [namedSqlQuery=dao.web_login, objs=[user1]] 
DEBUG   org.springframework.orm.hibernate3.SessionFactoryUtils user1- Opening Hibernate Session 
DEBUG   org.hibernate.impl.SessionImpl user1 - opened session at timestamp: 5511432318976000 
DEBUG   org.hibernate.impl.SessionFactoryImpl user1- evicting second-level cache: USERS_LOOKUP 
DEBUG   org.hibernate.impl.SessionFactoryImpl user1- evicting second-level cache: COUNTRY_LOOKUP

ecache.xml

 <cache name="query.oneHourPolicy"
           maxElementsInMemory="10000"
           eternal="false"
           timeToLiveSeconds="3600"
           diskPersistent="true"
           overflowToDisk="true"/>

春の休止状態の構成

 <prop key="hibernate.cache.use_second_level_cache">true</prop>
                <prop key="hibernate.cache.use_query_cache">true</prop>
                <prop key="hibernate.cache.provider_class">net.sf.ehcache.hibernate.SingletonEhCacheProvider</prop>
                <prop key="hibernate.cache.provider_configuration_file_resource_path">ehcache.xml</prop>
4

1 に答える 1

3

Hibernateの問題を見つけましたhttps://hibernate.onjira.com/browse/HHH-2224

私は怒鳴るでテストしました:

私のランダムクエリで

<sql-query name="random_write_query" callable="false">
        <synchronize table="USER"/>
        <synchronize table="USER_ADDRESS"/>
        {CALL PACKAGE.FUNCTION(?)}
</sql-query>

上記を呼び出すたびに、それが DB の変更であり、テーブル = USER または USER_ADDRESS によって同期されたキャッシュのみが無効になります

同期されたランダム読み取りクエリまたはエンティティのみが削除されます

<sql-query name="random_read_query">
         <synchronize table="USER"/>
         <synchronize table="USER_ADDRESS"/>
         <return-scalar column="USERNAME" type="string"/>
        <![CDATA[
            SELECT USERNAME FROM USER, USER_ADDRESS...
        ]]>
    </sql-query>
于 2012-08-22T17:13:35.657 に答える