itsm軟體_itsm軟體的主要功能
1.一級快取
一級快取區域是根據SqlSession為單位劃分的。
每次查詢會先從快取區域找,如果找不到從資料庫查詢,查詢到資料將資料寫入快取。
Mybatis內部儲存快取使用一個HashMap,key為hashCode+sqlId+Sql語句。value為從查詢出來對映生成的java物件
sqlSession執行insert、update、delete等操作commit提交後會清空快取區域。
2.二級快取
二級快取區域是根據mapper的namespace劃分的,相同namespace的mapper查詢資料放在同一個區域,如果使用mapper代理方法每個mapper的namespace都不同,此時可以理解為二級快取區域是根據mapper劃分。
每次查詢會先從快取區域找,如果找不到從資料庫查詢,查詢到資料將資料寫入快取。
Mybatis內部儲存快取使用一個HashMap,key為hashCode+sqlId+Sql語句。value為從查詢出來對映生成的java物件
sqlSession執行insert、update、delete等操作commit提交後會清空快取區域。
3.開啟二級快取
3.1在核心配置檔案SqlMapConfig.xml中加入
<settingname="cacheEnabled"value="true"/>
3.2要在你的Mapper對映檔案中新增一行:<cache/>,表示此mapper開啟二級快取
4.禁用二級快取
在statement中設定useCache=false可以禁用當前select語句的二級快取,即每次查詢都會發出sql去查詢,預設情況是true,即該sql使用二級快取。
<select id="findOrderListResultMap" resultMap="ordersUserMap" useCache="false">
5.重新整理快取
在mapper的同一個namespace中,如果有其它insert、update、delete操作資料後需要重新整理快取,如果不執行重新整理快取會出現髒讀。
設定statement配置中的flushCache="true"屬性,預設情況下為true即重新整理快取,如果改成false則不會重新整理。使用快取時如果手動修改資料庫表中的查詢資料會出現髒讀。
如下:
<insert id="insertUser" parameterType="cn.itcast.mybatis.po.User" flushCache="true">
6.Mybatis Cache引數
flushInterval(重新整理間隔)可以被設定為任意的正整數,而且它們代表一個合理的毫秒形式的時間段。預設情況是不設定,也就是沒有重新整理間隔,快取僅僅呼叫語句時重新整理。
size(引用數目)可以被設定為任意正整數,要記住你快取的物件數目和你執行環境的可用記憶體資源數目。預設值是1024。
readOnly(只讀)屬性可以被設定為true或false。只讀的快取會給所有呼叫者返回快取物件的相同例項。因此這些物件不能被修改。這提供了很重要的效能優勢。可讀寫的快取會返回快取物件的拷貝(通過序列化)。這會慢一些,但是安全,因此預設是false。
如下例子:
<cache eviction="FIFO" flushInterval="60000" size="512" readOnly="true"/>
這個更高階的配置建立了一個FIFO快取,並每隔60秒重新整理,存數結果物件或列表的512個引用,而且返回的物件被認為是隻讀的,因此在不同執行緒中的呼叫者之間修改它們會導致衝突。可用的收回策略有,預設的是LRU:
1.LRU–最近最少使用的:移除最長時間不被使用的物件。
2.FIFO–先進先出:按物件進入快取的順序來移除它們。
3.SOFT–軟引用:移除基於垃圾回收器狀態和軟引用規則的物件。
4.WEAK–弱引用:更積極地移除基於垃圾收集器狀態和弱引用規則的物件。
轉載於:https://my.oschina.net/dongwt/blog/813085