在寫業務的時候遇到關聯另乙個實體類然後需要獲取該實體類的相關屬性的情況。如果在遍歷外層物件的時候要去查詢該物件,也就是迴圈巢狀查詢,這樣在面對該物件該字段可修改的可能性很小並該查詢比較頻繁的情況下考慮依靠快取去降低資料庫的負擔。
例如我在迴圈處理廣告位:
// adlocation類有乙個mediaid屬性,對應media表的id
for (adlocation adlocation : adlocationlist)
但是這樣處理對於資料庫的負擔很大,而且這種值變化的可能性很低。我們可以採取快取。我們修改如下。
// 根據id快取media物件, 用於獲取media物件對時間要求不敏感的值
// 這裡使用com.google.common.cache jar包,可以設定相關引數,類似於乙個map結構去維護該物件,泛型為key - value。
// refreshafterwrite 設定清除快取時間,maxiumsize設定map的初始化容量。
private loadingcachemediacache = cachebuilder.newbuilder().maximumsize(10000)
.refreshafterwrite(20, timeunit.minutes).build(new cacheloader()
});
接下來我們就可以使用快取:
for(adlocation adlocation : adlocationlist)
資料庫快取
用資料庫 將要儲存的nsarray 或 nsdictionary 物件 轉為nsdata型別。再將nsdata存到資料庫的blob中。若將nsarray直接存到資料庫 那麼資料庫中儲存的是 nsstring型別的資料而不是nsarray物件本身,因此要轉為nsdata型別。方法如下 將oc物件轉為n...
快取資料庫
資料庫快取,當沒有網路時,拿取資料庫 內容,當重新整理資料時,清空資料庫內容,從新新增 建立資料庫類方法 package com.example.administrator.xie.dao import android.content.context import android.database....
資料庫快取
資料庫從伺服器上讀取資料時,可以從硬碟的資料檔案中獲取資料,也可以從資料庫快取中讀取資料。現在資料庫管理員需要搞清楚的是,在什麼樣的情況下,系統是從快取中讀取資料,而不是從硬碟的資料檔案中讀取資料?簡單的說,資料快取就是記憶體中的一塊儲存區域,其儲存了使用者的sql文字以及相關的查詢結果。通常情況下...