2010-04-18 7 views
0

У меня есть служба Гессена на Spring + iBatis, работающая на Tomcat. мне интересно, как кэшировать результаты ...Spring + iBatis + кеширование гессе

Я сделал следующий конфиг в моем sqlmap файле:

<sqlMap namespace="Account"> 

<cacheModel id="accountCache" type="MEMORY" readOnly="true" serialize="false"> 
    <flushInterval hours="24"/> 
    <flushOnExecute statement="Account.addAccount"/> 
    <flushOnExecute statement="Account.deleteAccount"/> 
    <property name="reference-type" value="STRONG" /> 
</cacheModel> 

<typeAlias alias="Account" type="domain.Account" /> 

    <select id="getAccounts" resultClass="Account" cacheModel="accountCache"> 
     fix all; 
     select id, name, pin from accounts; 
    </select> 

    <select id="getAccount" parameterClass="Long" resultClass="Account" cacheModel="accountCache"> 
     fix all; 
     select id, name, pin from accounts where id=#id#; 
    </select> 

    <insert id="addAccount" parameterClass="Account"> 
    fix all; 
     insert into accounts (id, name, pin) values (#id#, #name#, #pin#); 
    </insert> 

    <delete id="deleteAccount" parameterClass="Long"> 
     fix all; 
     delete from accounts where id = #id#; 
    </delete> 
</sqlMap> 

Тогда я сделал некоторые тесты ... У меня есть клиент Мешковины заявление. Я вызываю getAccounts несколько раз, и после каждого вызова это запрос к СУБД.

Как заставить мой сервис запрашивать СУБД только в первый раз (после перезапуска сервера) getAccounts и для следующих вызовов использовать кеш?

ответ

0

Решено. Раствор должен был добавить

<settings cacheModelsEnabled="true" /> 

в мой файл sqlMapConfig.

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