キャッシュの定義
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 | 利用するキャッシュの実装クラスを指定する。
|
なし |
readOnly | No | Read-Only
キャッシュか、Read/Writeキャッシュのどちらを利用するかを指定
|
true |
serialize | No | Serializable Read/Writeキャッシュを利用するかどうかを指定
|
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」