キャッシュの定義

iBATISのキャッシュは以下のように定義します。

<cacheModel id="product-cache" type ="LRU" readOnly="true" serialize="false">
  <flushInterval hours="24"/>
  <flushOnExecute statement="insertProduct"/>
  <flushOnExecute statement="updateProduct"/>
  <flushOnExecute statement="deleteProduct"/>
  <property name="cache-size" value="1000" />
</cacheModel>

キャッシュを利用するには、statementのcacheModel属性にCacheModel IDを指定します。

<select id="getProductList" cacheModel="product-cache">
select * from PRODUCT where PRD_CAT_ID = #value#
</select>

cacheModel要素

iBATISクエリーキャッシュ定義のルート要素。キャッシュ定義および利用の単位。

属性 必須 説明 default
id Yes キャッシュを識別するためのID なし
type Yes 利用するキャッシュの実装クラスを指定する。
  • CacheControllerインターフェースを実装した完全修飾クラス名
  • エイリアス("MEMORY","LRU","FIFO","OSCACHE")
  • なし
    readOnly No Read-Only キャッシュか、Read/Writeキャッシュのどちらを利用するかを指定
  • Read/Writeキャッシュ:false
  • Read-Onlyキャッシュ:true
  • true
    serialize No Serializable Read/Writeキャッシュを利用するかどうかを指定
  • Serializable Read/Writeキャッシュ:true
  • 通常のRead/Writeキャッシュ:false
  • false

    flushInterval要素

    キャッシュをFlushする間隔を指定します。cacheModelに1つだけ指定可能です。
    Flush間隔として、"hours", "minutes", "seconds", "milliseconds"を定義できます。

    flushOnExecute要素

    実行後にキャッシュをFlushさせるmapped statementを指定します。

    属性 必須 説明 default
    statement Yes 実行後にFlushを行うstatementのId なし

    property要素

    cacheModel要素のtype属性で指定したキャッシュタイプに与えるパラメータを指定します。指定したキャッシュタイプによって、有効になる属性が異なります。

    属性 必須 説明 default
    reference-type(※type="MEMORY") No "STRONG", "SOFT", "WEAK" WEAK
    size(※type="LRU" or "FIFO") ??? 1度にキャッシュに保持できるオブジェクトの最大数(Integer)。Stringのインスタンスも、JavaBeanのArrayListも1つのオブジェクト。 ???

    なお"OSCACHE"の場合は、パラメータはoscache.propertiesに定義します。このファイルはクラスパスのルートに配置します。



    参考

    • iBATIS Data Mapper Developer Guide」- 「Caching Mapped Statement Results」