2015-11-10 17 views
12

レルムを使用して、いくつかのポイント(関連性がない)にデータを保持するアプリケーションを実装しています。例:レルム:アプリケーション内で1つまたは複数のレルムを使用する(および1つまたは複数のスキーマ)

  1. ユーザーがお気に入りのアイテムを保存します。
  2. (自動補完に

を提供するために、アプリ

  • 保存最近の検索/フォームのいくつかの要求のための永続キャッシュを実装チャットの会話と最近の定数
  • を保存します(アプリはチャットを持っています)それらのポイントのそれぞれをモジュール/パッケージとして名付けてください)

    各モジュール/パッケージには、いくらかのRealmObjectsが残っています。どのように私はこれを整理する必要がありますか?コードのクリーン度、パフォーマンスまたは何の観点から私は

    オプションAを気にする必要があります

    使用Realm.getInstance(context)

    適切にアクセス:ユニークなスキーマでユニークな(デフォルト)レルムを使用します各モジュール/パッケージでRealmObjects

    オプションB:デフォルトのスキーマ

    と使用複数のレルム

    RealmConfigurationに、各モジュールで使用されている領域(デフォルトスキーマを使用)に異なる名前を指定します。

    データはアプリの別の部分に属しており、相互に分離されていないため、モジュールごとに異なるレルム名を使用します。

    オプションC:複数のレルムを使用し、アプリケーションパッケージごとにスキーマで使用するモデルクラスの範囲を指定します。 隔離されたパッケージごとに名前とスキーマを指定します。

    public static Realm getChat(Context context){ 
        RealmConfiguration config = new RealmConfiguration.Builder(context) 
          .name("chat.realm") 
          .schemaVersion(1) 
          .setModules(new ChatRealmModule()) 
          .build(); 
        return Realm.getInstance(config); 
    } 
    
    // Create the module 
    @RealmModule(classes = { ChatRoom.class, ChatMessage.class, ChatUser.class}) 
    public static class ChatRealmModule{ 
    } 
    

    オプションD:その他の例では?

  • 答えて

    9

    実際にデータが完全に切断されている場合、私はオプションC) と一緒に行くことになります。マイグレーションは扱いが簡単で、RealmがRealmのすべてのモデルクラスを時折ループしなければならないため、非常に小さなパフォーマンス向上もあります。

    ただし、「間違っています」というオプションはありません。

    1

    することができますはい、あなたは通常、レルム

    Configuring Other Reams上で複数のクラスを持っているでしょうことができますが例えば、異なるファイルのパスを指定する方法を示しています

    RealmConfiguration myConfig = new RealmConfiguration.Builder(context) 
        .name("myrealm.realm") 
        .schemaVersion(2) 
        .modules(new MyCustomSchema()) 
        .build(); 
    
    RealmConfiguration otherConfig = new RealmConfiguration.Builder(context) 
        .name("otherrealm.realm") 
        .schemaVersion(5) 
        .modules(new MyOtherSchema()) 
        .build(); 
    
    Realm myRealm = Realm.getInstance(myConfig); 
    Realm otherRealm = Realm.getInstance(otherConfig); 
    
    @RealmModule(classes={Abc.class, Pqrs.class, Xyz.class}) 
    class MyCustomSchema{} 
    
    @RealmModule(classes={Abc1.class, Pqrs2.class, Xyz2.class}) 
    class MyOtherSchema{} 
    
    関連する問題