2016-05-12 8 views
0

私はEhcacheの初心者です。ehcache - 永続的キャッシング

私はmybatis xmlでキャッシュSQLクエリの結果をしようとしていますが、ehcacheはその結果でクエリをキャッシュしていますが、同じJVMインスタンスが実行中であっても操作が完了するとキャッシュされたデータはクリアされます。

誰でも、JVMが終了するまでキャッシュをディスク/メモリに格納する方法をアドバイスできますか? Ehcacheの橋 - 何を探してるんですmybatis-mapper.xml

<cache type="org.mybatis.caches.ehcache.EhcacheCache"> 
    <property name="eternal" value="false" /> 
    <property name="maxElementsInMemory" value="100000" /> 
    <property name="timeToIdleSeconds" value="3600" /> 
    <property name="timeToLiveSeconds" value="3600" /> 
    <property name="memoryStoreEvictionPolicy" value="LFU" /> 
    <property name="statistics" value="true" /> 
</cache> 

コードスニペットは.....

答えて

0
+0

Ehcacheの永続性を理解します。別のehcache設定ファイルを作成する代わりに、mybatis mapper xmlの内部でを使用することは可能ですか? 「<キャッシュ・タイプ= "org.mybatis.caches.ehcache.EhcacheCache"> \t \t <プロパティ名= "永遠の" 値= "true" を/> \t \t <プロパティ名= "maxElementsInMemory" 値= "100000 "/> \t \t <プロパティ名=" memoryStoreEvictionPolicy "値= "LRU"/> \t \t <プロパティ名= "flushInterval" 値= "60000"/> \t \t <プロパティ名= "統計" 値=" true "/> \t \t - > not working \t ' – sstest

0

ないMyBatisののスペシャリストです。しかし、あなたの設定のサンプルから、あなたは有効期限をたくないと仮定すると、以下の変更を行います。true

  • に設定する

    • eternalプロパティは、これは必ず有効期限を決して行いません2つのtimeToXXX性質

    を削除しますトリガーされます。ただし、キャッシュはリソース消費を制御するために引き続き退去することができます。この問題を修正するためには

  • +0

    TTL、TTI設定なしで永遠の "true"と試してみました。しかし、まだ同じです。 ehcacheのデバッグだけで、TransactionalCacheのclear()メソッドが、コミットが完了し、そのキャッシュがクリアされているため、デフォルトで呼び出されていることに気付きました。このclear()メソッドをスキップするプロパティはありますか?理解が間違っていれば私を訂正してください。 '@オーバーライド public void clear(){ reset(); clearOnCommit = true; } – sstest

    0

    、我々は以下をごmapper.xml 1の属性を明示的に言及する必要があります))useCache =「真」とflushCacheにセレクト動作 2 =「false」をflushCacheに=「false」にすべての挿入/更新のために/操作を

    サンプルコードスニペットを削除します -

    <select id="getTestData" parameterType="map" resultMap="testDtls" useCache="true" flushCache="false" > 
    
    <insert id="insertTestData" parameterType="map" flushCache="false" > 
    
    関連する問題