DBFlowドキュメントDBFlowドキュメント:キャッシュ

2171 ワード

前言
パフォーマンスを向上させるため、DBFlowはキャッシュをサポートします.これにより、必要なデータを迅速に取得できます.
注意1
  • のデフォルトではキャッシュは有効ではありませんが、キャッシュを簡単に有効にすることができます.
  • は、modelのクエリーにキャッシュされます.

  • 注2キャッシュは次の場合に使用されます.
  • 同じModelから複数回クエリーします.
  • Modelオブジェクト全体をクエリーします.(プライマリ・キー・ベース@PrimaryKey)
  • キャッシュは次の場合に使用されません.
  • は、クエリの一部または複雑なクエリを実行します.
  • モデルが追加削除されたとき.(この場合、キャッシュをクリアしたほうがいい!)

  • キャッシュをサポートするクラス
  • SparseArray ---》SparseArrayBasedCache (platform SparseArray)
  • Map ---》 SimpleMapCache
  • LruCache ---》 ModelLruCache (copy of LruCache, so dependency avoided)

  • キャッシュの有効化
    プライマリ・キーがあるテーブルについて、次のように有効にします.
    @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に格納されているのは、あなたの宣言のプライマリ・キーの順序です.