Spring + iBatis + Hessian缓存

时间:2010-04-18 13:02:58

标签: spring caching ibatis hessian

我在Spring + iBatis上使用Hessian服务在Tomcat上工作。 我想知道如何缓存结果......

我在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>

然后我做了一些测试......我有一个hessian客户端应用程序。我多次调用getAccounts,每次调用后都是对DBMS的查询。

如何让我的服务仅在第一次(在服务器重新启动后)调用DBA并调用getAccounts以及以下调用以使用缓存时查询DBMS?

1 个答案:

答案 0 :(得分:0)

解决。解决方案是添加

<settings cacheModelsEnabled="true" />

到我的sqlMapConfig文件。