今天碰見了乙個bug,兩個系統同使用乙個資料庫,兩個系統都採用的ssh框架,其中乙個系統更新了資料庫後,另乙個系統得5分鐘後才能取得更新的資料,腫麼回事呢?
仔細查了查,原來是hibernate快取的問題,
眾所周知,hibernate是採取二級快取的策略,第一是session級別的快取,二是sessionfactory級別的快取,並且預設二級快取是開啟的。(使用快取需設定配置hibernate.cache.use_query_cache=true)讀取資料的時候,hibernate將第一次讀取的內容放到了快取中,若此時有別的應用修改了資料庫中的資料,程式再次讀取的時候,內容是從快取中直接獲取,先從一級快取中讀,若沒有則從二級快取中讀取,則讀取的資料為過時的資料。
採取的應對措施為:
1.session.clear(),先清除一級快取
2.createsqlquery建立的sqlquery物件query中設定query.setcachemode(cachemode.ignore);
設定成cachemode.ignore模式,在讀取資料的時候,不和二級快取交換資料,直接讀取資料庫。
這樣資料庫更新後hibernate快取就會實時更新
hibernate重新整理資料時的快取問題
眾所周知,hibernate是採取二級快取的策略,第一是session級別的快取,二是sessionfactory級別的快取,並且預設二級快取是開啟的。讀取資料的時候,hibernate將第一次讀取的內容放到了快取中,若此時有別的應用修改了資料庫中的資料,程式再次讀取的時候,內容是從快取中直接獲取,...
fragment切換時,重新整理資料
一般,我們做專案,底部的4個fragment切換時,最好可以重新整理資料 做fragment顯影藏時,最好用hide,show 這時會有乙個方法onhiddenchanged 在這裡面我們可以重新整理資料 還可以做這個操作 點當前tab,也重新整理介面 override public void on...
echarts重新整理資料時x資料不變
在工作中利用echarts繪製折線圖,發現當x軸時間更新時,x軸並沒有重新整理,當時的 如下。初始化echarts var initoption legend grid toolbox xaxis yaxis series var tablechart require.config require ...