尽管我阅读了 Realm 文档,但我对表和 Realm 的概念感到困惑。 据我所知, Realm 就像表一样,但它可以存储多个模型。 问题是,我想要多个表(其中一些只包含 1 个类的对象,有些只包含多个类),但我不知道如何管理多个 Realm 。 我希望我的“Database”类成为 RealmDatabase 的包装器,并且我希望其中有多个表,例如,一个用于“新歌曲”的表和一个用于“最佳歌曲”的表。所以我所做的是:
public class Database {
//tables that I want to have
public enum RealmType {
SONGS_NEW, SONGS_BEST, PLAYLISTS_BEST, PLAYLISTS_MINE, PLAYLISTS_OTHERS, ALBUMS_SPECIAL, NEWS, FEED
}
private static final String TAG = "Database";
Context context;
//A realm object for each table
Realm profileRealm;
Realm songs_newRealm;
Realm songs_bestRealm;
//and so on...
// as I didn't know how to differentiate between Realms (all of them are created with Realm.getDefaultInstance(), and I think they are just one Realm. so I created a class for different configs )
private static class RealmConfigs {
static RealmConfiguration songs_newConfig;
static RealmConfiguration songs_bestConfig;
//and so on..
public RealmConfigs() {
config();
}
private static void config() {
songs_newConfig = new RealmConfiguration.Builder()
.name("songs_new.realm")
.deleteRealmIfMigrationNeeded()
.build();
songs_bestConfig = new RealmConfiguration.Builder()
.name("songs_best.realm")
.deleteRealmIfMigrationNeeded()
.build();
}
}
}
但是感觉不太对劲。我知道我对 Realm 的核心概念感到困惑,但文档也没有帮助。如果能清楚地解释如何正确管理不同的表并初始化它们,我们将不胜感激。
PS。我也找到了这个答案,但感觉也不对: https://stackoverflow.com/a/40547703/7893941最佳答案
几点:
每个 Realm 配置都将转换为一个数据库。 每个扩展realmobject 的类都将被转换为一张表。 这些类的每个实例都将转换为一行(如果保存的话)。
首先尝试确定您需要多少个数据库和表? (99% 的应用程序使用 1 个数据库)。您可以阅读并遵循数据库规范化方法,然后尝试使用 Realm 实现您需要的功能。
关于android - Realm 数据库多表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51734750/