android - Realm 数据库多表

标签 android realm android-database

尽管我阅读了 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/

相关文章:

android - AssetManager$AssetInputStream.finalize() 在 10 秒后超时

java - Android SQL 数据库错误(代码 1)

android - Flutter - 无法使用 Firebase Auth 登录

javascript - Android Studio 中的 WebView 应用

android - 如何在 CollapsingToolbarLayout 中固定 RelativeLayout

ios - Realm 更新 Swift 无法识别的选择器发送到实例

java - 检查多个 Realm 模型的 id 是否存在

ios - Swft/Xcode - pod框架和动态框架

android - 卸载 Android 应用程序时不会删除数据库

java - 当我执行代码时,sqlite 中发生错误= CursorIndexOutOfBoundsException