我正在评估 RealmDb,感觉 RealmDb 与模型层紧密耦合。这让我感觉如果明天需要替换为其他本地数据库,那么将需要进行大量重构。
我的问题是如何在 RealmDB 中实现干净的架构?是否有可以参考的示例?
我正在评估 RealmDb,感觉 RealmDb 与模型层紧密耦合。这让我感觉如果明天需要替换为其他本地数据库,那么将需要进行大量重构。
我的问题是如何在 RealmDB 中实现干净的架构?是否有可以参考的示例?
如果您愿意,Realm可以使您更轻松地将数据库模型作为视图模型进行重用。但是,没有什么能阻止您在数据层实体和视图层实体之间进行映射。
例如:
// Data layer
public class FooEntity extends RealmObject {
// Realm fields and methods...
public static FooEntity fromViewModel(FooViewModel viewModel) {
// Convert to entity
}
public static FooViewModel toViewModel(FooEntity entity) {
// Convert to view model
}
}
// View layer
public class FooViewModel {
// Standard POJO used by the View layer
}
fromViewModel
并执行realm.insert(fooEntity)
吗?还是我需要先执行findById
,然后在事务内调用检索到的对象上的设置器? - einsArealm.copyToRealmOrUpdate(DBModel.from(viewModel))
或使视图层创建小的操作消息,模型层将把它们转换为仅调用几个字段的setter。就我个人而言,我喜欢更小的操作,因为它使代码的意图更易读,并允许您合并来自UI和网络的更改,但这也需要稍微多做一些工作。 - Christian Melchiorrealm.insertOrUpdate(fooEntity)
,insert()
不能用于更新。 - EpicPandaForce