简单在ibatis中使用cache
首先设置SqlMapConfig.xml中 < settings /> 节点的属性cacheModelsEnabled="true"
然后在具体sqlmap文件中书写 < cacheModel >
< cacheModel id ="product-cache" type ="LRU" >
< flushInterval hours ="24" />
< flushOnExecute statement ="insertProduct" />
< flushOnExecute statement ="updateProduct" />
< flushOnExecute statement ="deleteProduct" />
< property name ="size" value ="1000" />
</ cacheModel >
最后给 < select /> 节点应用cache
< select id ="getAllProducts" cacheModel ="product-cache" >
select * from PRODUCT
</ statement >
复杂点的用法
< cacheModel /> 节点
type="LRU"
type属性可以指定cache的类型,ibatis支持3种缓存:
MEMORY 没有统一的对象重用模式或内存不足的应用。
LRU 经常使用的对象,这是性能最好的选择。
FIFO 在短时间内持续引用,而后很可能不再使用。
也可以使用外部cache如:
type="OSCACHE"
readOnly="true"
默认true时缓存效果最好,可以减少更新。
serialize="false"
默认false,设true可以提高整体应用的性能。
serialize只能应用于实现了Serializable接口的对象,而且和lazyLoadingEnabled="true"属性冲突。
flushInterval
自动刷新间隔时间。
flushOnExecute
在特定id的操作后,刷新cache,可选操作。
手动刷新缓存
[sqlmap].flushDataCache("product-cache")
刷新cache当id="product-cache"
[sqlmap].flushDataCache()
刷新sqlmap内的所有cache
首先设置SqlMapConfig.xml中 < settings /> 节点的属性cacheModelsEnabled="true"
然后在具体sqlmap文件中书写 < cacheModel >
< cacheModel id ="product-cache" type ="LRU" >
< flushInterval hours ="24" />
< flushOnExecute statement ="insertProduct" />
< flushOnExecute statement ="updateProduct" />
< flushOnExecute statement ="deleteProduct" />
< property name ="size" value ="1000" />
</ cacheModel >
最后给 < select /> 节点应用cache
< select id ="getAllProducts" cacheModel ="product-cache" >
select * from PRODUCT
</ statement >
复杂点的用法
< cacheModel /> 节点
type="LRU"
type属性可以指定cache的类型,ibatis支持3种缓存:
MEMORY 没有统一的对象重用模式或内存不足的应用。
LRU 经常使用的对象,这是性能最好的选择。
FIFO 在短时间内持续引用,而后很可能不再使用。
也可以使用外部cache如:
type="OSCACHE"
readOnly="true"
默认true时缓存效果最好,可以减少更新。
serialize="false"
默认false,设true可以提高整体应用的性能。
serialize只能应用于实现了Serializable接口的对象,而且和lazyLoadingEnabled="true"属性冲突。
flushInterval
自动刷新间隔时间。
flushOnExecute
在特定id的操作后,刷新cache,可选操作。
手动刷新缓存
[sqlmap].flushDataCache("product-cache")
刷新cache当id="product-cache"
[sqlmap].flushDataCache()
刷新sqlmap内的所有cache