DBFlowドキュメントDBFlowドキュメント:キャッシュ
2171 ワード
前言
パフォーマンスを向上させるため、DBFlowはキャッシュをサポートします.これにより、必要なデータを迅速に取得できます.
注意1のデフォルトではキャッシュは有効ではありませんが、キャッシュを簡単に有効にすることができます. は、modelのクエリーにキャッシュされます.
注2キャッシュは次の場合に使用されます.同じModelから複数回クエリーします. Modelオブジェクト全体をクエリーします.(プライマリ・キー・ベース@PrimaryKey) キャッシュは次の場合に使用されません.は、クエリの一部または複雑なクエリを実行します. モデルが追加削除されたとき.(この場合、キャッシュをクリアしたほうがいい!)
キャッシュをサポートするクラス SparseArray ---》SparseArrayBasedCache (platform SparseArray) Map ---》 SimpleMapCache LruCache ---》 ModelLruCache (copy of LruCache, so dependency avoided)
キャッシュの有効化
プライマリ・キーがあるテーブルについて、次のように有効にします.
データベースからのデータ・ロード・プロセス
データベースからデータを取得すると、完全なクエリーが実行され、Cursorが返されます.各ローのプライマリ・キーをチェックすると、キャッシュにプライマリ・キーが存在する場合、オブジェクトに直接戻ります.これにより、高価な変換プロセス(クエリーの速度を向上!)をスキップする可能性があります.
マルチスレッドアクセスキャッシュに注意すると、キャッシュの変更に問題が発生する可能性があります.
上級キャッシュのサイズを指定 カスタムキャッシュ 複数のプライマリ・キーを持つテーブルについて、 を使用可能にします.
このフィールドに注意してください:public static final IMultiKeyCacheConverter multiKeyCacheModel----:オブジェクトが返すタイプを指定します.---->メソッドgetCachingKey:Object[]valuesに格納されているのは、あなたの宣言のプライマリ・キーの順序です.
パフォーマンスを向上させるため、DBFlowはキャッシュをサポートします.これにより、必要なデータを迅速に取得できます.
注意1
注2キャッシュは次の場合に使用されます.
キャッシュをサポートするクラス
キャッシュの有効化
プライマリ・キーがあるテーブルについて、次のように有効にします.
@Table(database = AppDatabase.class, cachingEnabled = true)
public class CacheableModel extends BaseModel {
@Column
@PrimaryKey(autoincrement = true)
long id;
@Column
String name;
}
データベースからのデータ・ロード・プロセス
データベースからデータを取得すると、完全なクエリーが実行され、Cursorが返されます.各ローのプライマリ・キーをチェックすると、キャッシュにプライマリ・キーが存在する場合、オブジェクトに直接戻ります.これにより、高価な変換プロセス(クエリーの速度を向上!)をスキップする可能性があります.
マルチスレッドアクセスキャッシュに注意すると、キャッシュの変更に問題が発生する可能性があります.
上級
@Table(cacheSize = {size})
@ModelCacheFieldpublic static ModelCache modelCache = new SimpleMapCache<>(); // replace with any cache you want.
@Table(database = AppDatabase.class, cachingEnabled = true)
public class Coordinate extends BaseModel {
@MultiCacheField
public static final IMultiKeyCacheConverter multiKeyCacheModel = new IMultiKeyCacheConverter() {
@Override
@NonNull
public String getCachingKey(@NonNull Object[] values) {
return "(" + values[0] + "," + values[1] + ")";
}
};
@PrimaryKey
double latitude;
@PrimaryKey
double longitude;
このフィールドに注意してください:public static final IMultiKeyCacheConverter multiKeyCacheModel----:オブジェクトが返すタイプを指定します.---->メソッドgetCachingKey:Object[]valuesに格納されているのは、あなたの宣言のプライマリ・キーの順序です.