hibernate重新整理資料時的快取問題

2021-08-27 09:17:50 字數 580 閱讀 7705

今天碰見了乙個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 ...