Я начинаю использовать Realm для хранения объектов в своем приложении для Android. Вот пример того, что я хочу сохранить:
public class Item implements RealmModel {
String id;
...
}
У меня есть несколько списков, в которых отображаются элементы. Количество списков может увеличиваться (пользователь может создать как можно больше списков.
Допустим, пользователь создает список под названием «Лучшие». Когда я просматриваю список «Лучшие», я вызываю getItems("Best")
, который получает List<Items>
от API. Теперь мне нужно выяснить, как сохранить этот список. В мире SQLite я бы, например, создал новую таблицу custom_list_best, которая представляет собой единственный список всех Item.id, входящих в этот список. У меня также была бы таблица «items», в которой есть все отдельные Items. Чтобы получить элементы в списке лучших, я бы просто выполнил запрос соединения как для таблицы best, так и для таблицы элементов.
В мире Realm я пытаюсь понять, как работает Realm и как лучше всего строить свои модели.
Сначала я думал, что могу создать объект с именем CustomList
:
public class CustomList implements RealmModel {
String listId;
RealmList<Item> items;
}
Тогда я бы сохранил RealmList<CustomList>
. Но единственная проблема в том, что я также хочу иметь возможность запрашивать все элементы. Так что мне также нужно сохранить RealmList<Item>
в Realm. Как в этом случае работает Realm? Если я сохраню отдельный RealmList<Item>
, а затем сохраню каждый RealmList<CustomList>
, не будут ли дублироваться данные?
Вместо этого мне придется вручную обрабатывать это, сделав вместо этого следующее:
public class CustomList implements RealmModel {
String listId;
List<String> itemIds;
}
А затем запросить Item.class
объекты, у которых есть itemId в itemIds из вышеуказанного объекта?