Realm

RealmでListやMapを保持

Realm for Androidでの話です

Realmではオブジェクトを利用して、データの永続化が行うことが可能です。

しかし、オブジェクト内のフィールドとして、ListやMapを保持するためにはひと工夫が必要でした。

RealmListを利用するとListの形で保持することはできます。これにより一対多の関係を作ることができます

これはこれでいいのですが、単純にListみたいにしたい場合はエラーになります

今回どうしても、Listにしたかったので、JSON形式で保存することにしました

@IgnoreでListはデータ永続化の対象外にしました。そのうえで、代入する場合、ListをJSONに変換して、itemsに代入します。取り出すときにはitemのJSONをListに変換して取り出します。永続化自体はString itemsでJSON形式の文字列で行われています。実際には細かいところでNULLチェックなどが必要になりますね

このアイディアの応用でシンプルな形式ならMapなどもなんとか行けます。

もっといいアイディアがあるはずだと思いますが、まずはこれで実現できました。

☆Realmの導入~使用方法、注意点までまとめ☆

〇導入方法

・/build.gradle

・app/build.gradle

上記2つを追加するだけで完了!!
参考:

参考1
参考2

〇スピードはSQLITEよりも速い
参考3

〇利用方法
□登録

□取り出し

□削除、更新

〇注意事項
primaryKeyは1テーブルに1つのみ
stringは1000文字以上登録できる(確認済み)
Object(Bean、entity、dto。。。)が一つのテーブルみたいな感じ。複数テーブル(Object)作成可能。
テーブル結合に関してはコードでやるしかない(Realmでの1対多の関係の記述について書けなくはない

参考

・Realmの隠れた重要ポイント
参考
・1テーブルへの登録レコード数の上限にかんしては不明(4カラムのテーブルに100万レコード登録できることは確認済み)