我正在使用Realm实现一个应用程序,该应用程序在某些点(它们之间不相关)中保留数据。例如:
(让我们将这些点中的每一个命名为模块/包)
每个模块/包都有一些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:其他?
答案 0 :(得分:9)
如果您的数据真的完全断开,我会选择C) 它使清洁分离。迁移更容易处理,并且还有非常小的性能提升,因为Realm必须不时遍历Realm中的所有模型类。
但是没有一个选项是"错误"。
答案 1 :(得分:2)
是的,你可以,虽然你可以在Realm上有多个班级
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{}