眾所周知,hibernate是採取二級快取的策略,第一是session級別的快取,二是sessionfactory級別的快取,並且預設二級快取是開啟的。讀取資料的時候,hibernate將第一次讀取的內容放到了快取中,若此時有別的應用修改了資料庫中的資料,程式再次讀取的時候,內容是從快取中直接獲取,先從一級快取中讀,若沒有則從二級快取中讀取,則讀取的資料為過時的資料。
我遇到的是分頁資料的讀取,因為有個後台程式在定時更新作業狀態資料,故在快取開啟的情況下重新整理頁面,不僅得不到應有的正確資料,
不斷重新整理時還會出現很多奇怪的現象,比如狀態資料的不斷改變和時隱時現,當時搞得很惱火,靜心讀了hibernate的快取策略後,採取的應對措施為:
1.session.clear(),先清除一級快取
2.createsqlquery建立的sqlquery物件query中設定query.setcachemode(cachemode.ignore);
設定成cachemode.ignore模式,在讀取資料的時候,不和二級快取交換資料,直接讀取資料庫。
則頁面重新整理皆為正常顯示,因為分頁每頁顯示的資料頂多也就10幾20幾條,故不讀快取對效能影響不大,可放心使用。
hibernate重新整理資料時的快取問題
今天碰見了乙個bug,兩個系統同使用乙個資料庫,兩個系統都採用的ssh框架,其中乙個系統更新了資料庫後,另乙個系統得5分鐘後才能取得更新的資料,腫麼回事呢?仔細查了查,原來是hibernate快取的問題,眾所周知,hibernate是採取二級快取的策略,第一是session級別的快取,二是sessi...
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 ...