2010-04-18 6 views
0

J'ai un service Hessian sur Spring + iBatis qui fonctionne sur Tomcat. Je me demande comment mettre en cache des résultats ...Spring + iBatis + mise en mémoire cache Hessian

J'ai fait la configuration suivante dans mon fichier 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> 

Alors je l'ai fait quelques tests ... J'ai un client de toile de jute application. J'appelle getAccounts plusieurs fois et après chaque appel c'est une requête au SGBD. Comment faire pour que mon service interroge le SGBD uniquement une première fois (après le redémarrage du serveur) getAccounts et que les appels suivants utilisent un cache?

Répondre

0

Résolu. La solution consistait à ajouter

<settings cacheModelsEnabled="true" /> 

à mon fichier sqlMapConfig.

Questions connexes