OpenJpa 的 cache 機制及使用

2021-05-23 05:37:28 字數 1168 閱讀 7726

openjpa的cache機制要比其他的orm框架自帶的cache要強大的多,其他的orm框架如hibernate自帶的cache是 session 級別的,如果你想實現跨session的cache就必須整合third party的cache(ehcache,oscache),但openjpa的cache是能夠跨session的,對應jpa的標準來說就是跨 entitymanager是entitymanage***ctory level的,而且openjpa的cache還能夠support multi-jvm,也就是能夠在分布式的環境中使用。

openjpa的cache分為兩種,一種是datacache用來cache entity.

使用時需要加入以下配置檔案到persistence.xml中的下

其中cachesize很清楚就是指所能cache的entity的最大數目,這裡需要注意的是softreferencesize這個屬性,sofereference是指openjpa的cache如果達到最大儲存數目,或根據一定的演算法需要從cache中移出一下資料時,會把它們放到乙個softreferencemap中(注softreferencemap中的資料也會刪除只是這些資料比直接刪除會待的時間久一些,以防止在 cache刪除他們以後你馬上就訪問他們),這樣下次訪問到這個移出的資料時就會到softreferencemap 中去找,這樣比直接刪除了,重新訪問db查詢的效率好一點。這點跟其他的cache實現有點不一樣,其它的cache是直接從cache中刪除這些資料。如果你不想使用sofereferencemap,就把它的值設成0.

此外,你還可以設定cache在某個特定的時間timeout 通過設定evictionschedule 這個屬性比如(evictionschedule='15,45 15 * * 1')表示的意思是讓cache在星期天的下午三點15分到45分之間清除cache.

你還可以給某個entity設定timeout的時間通過@datacache(timeout=1000000)

關於第二個屬性openjpa.remotecommitprovider主要在分布式環境中使用cache時要配置,來保持在分布式環境中各個jvm中cache資料的同步

第二種cache是querycache,openjpa預設在你enable datacache後,自動幫你enable query cache. querycache主要用來cache query返回的結果

備註:

HTTP請求的快取(Cache)機制

先來一張圖 下面簡單的來描述一下http cache機制 當資源資源第一次被訪問的時候,http status返回200,在頭部攜帶當前資源的描述資訊,eg 同時瀏覽器會將資源快取到cache目錄,並儲存檔案描述資訊。當客戶端第二次請求資源時,會先檢查cache目錄中是否含有該資源,如果有,並且還沒...

thinkphp 中的cache快取機制更是強大

注意 首先這個 是寫在控制器中的!cache cache getinstance file 就是開啟快取的標誌 cache set username 孫亞龍 10 設定乙個變數username叫孫亞龍,在10秒內快取起來 cache get username 獲得快取起來的username變數 se...

計算機快取機制cache

什麼是ram?隨機讀寫儲存器 ram sram dram 當cpu讀取主存時,將位址訊號放到位址匯流排上傳給主存,主存讀到位址訊號後,解析訊號並定位到指定儲存單元,然後將此儲存單元資料放到資料匯流排上返回給cpu。什麼是mesi?mesi 為了保證多個快取中共享資料的一致性,定義了 cache li...