iBATIS CacheModel使用淺析
iBATIS CacheModel的使用是什么情況呢?讓我們首先從現(xiàn)狀入手,Cache也是經(jīng)常討論的一個(gè)話題之一,在我們系統(tǒng)開(kāi)發(fā)的過(guò)程中,總會(huì)存在著這樣一類數(shù)據(jù),它們更新頻率很低,然而使用的頻率卻非常之高。為了提高系統(tǒng)性能,我們通常將此類數(shù)據(jù)裝入緩存。iBATIS.NET也有自己的緩存系統(tǒng)。
MappedStatement的查詢結(jié)果集可以根據(jù)CacheModel的值來(lái)確定它是否被裝入緩存以及如何裝入緩存。而iBATIS CacheModel也是在配置文件中事先定義好的。具體的定義方式如下:
- ﹤cacheModel id="employee-cache" implementation="LRU" readOnly="true" serialize="false"﹥
- ﹤flushInterval hours="24"/﹥
- ﹤flushOnExecute statement="insertEmployee"/﹥
- ﹤flushOnExecute statement="updateEmployee"/﹥
- ﹤flushOnExecute statement="deleteEmployee"/﹥
- ﹤property name="CacheSize" value="100"/﹥
- ﹤/cacheModel﹥
iBATIS CacheModel使用淺析配置好之后,它會(huì)創(chuàng)建一個(gè)名為"employee-cache"的緩存實(shí)例,implementation表示它的實(shí)現(xiàn)規(guī)則是LRU,即:Leaste Recently Used。iBATIS.NET還有MEMORY,FIFO幾種緩存的模式。
readOnly的值說(shuō)明緩存是只讀的還是可讀寫的,如果readOnly為true,緩存就是只讀,false為可讀寫。
serialize指示緩存是在整個(gè)Application中有效還是僅作用于當(dāng)前的Session。flushInterval的值表示緩存的有效期,上面的配置中則表示改緩存每24小時(shí)清空一次,當(dāng)然有效期還可以用minutes, seconds or milliseconds來(lái)表示。
flushOnExecute表示緩存將在執(zhí)行了什么操作時(shí)被清空,上面的配置中表示該緩存在執(zhí)行insertEmployee or updateEmployee or deleteEmployee時(shí)被清空。
CacheSize表示緩存的***條目,當(dāng)超過(guò)這個(gè)值的時(shí)候就會(huì)按照implementation中定義的規(guī)則來(lái)清除相應(yīng)的條目,上面配置中則表示當(dāng)緩存的條目超過(guò)100時(shí),則移出最近最少使用的條目。當(dāng)我們配置好cacheModel之后就可以在statement中使用了,如下:
- ﹤statement id="EmployeeList" cacheModel="employee-cache"﹥
- select * from Employee
- ﹤/statement﹥
iBATIS CacheModel的相關(guān)情況就介紹到這里,希望對(duì)你了解iBATIS CacheModel緩存系統(tǒng)有所幫助。
【編輯推薦】