Моя задача - сделать кэш на ОС Android для моего приложения (это своего рода мессенджер). Я хотел бы хранить сообщения в базе данных, но встретил проблему хранения различных типов сообщений (в настоящее время 5 типов сообщений для каждого типа есть это собственные поля и все они расширяют базовый класс)GreenDao и наследование объектов
GreenDao documentation говорит:
Note: currently it’s impossible to have another entity as a super class (there are no polymorphic queries either)
Я планирую иметь юридическое лицо, которое почти 1 к 1 к базовому классу, за исключением одного столбца - необработанных двоичных или JSon данных, в которой каждый класс ребенок может писать все, что ему нужно.
Мои вопросы:
- GreenDao является хорошим решением в таком случае? Есть ли какие-либо решения, которые позволяют не беспокоиться о наследовании - и насколько они стоили с точки зрения эффективности.
- Как «сериализовать» данные в таком поле (какой метод я должен переопределить или где я должен поместить свой код, который будет делать все необходимые вещи
- Как дать правильному конструктору GreenDao «десериализацию» Json или двоичный код для исправления класса экземпляр
- Должен ли я использовать отражение - или просто переключитесь/случай для нахождения правильного конструктора (только 5 типов конструкторов возможно) - это отражение того, сколько будет отражением «стоимость» в таком случае
Ваши классы генерируются greendao, так почему вы хотите получить базовый класс на первом месте? Я предлагаю, чтобы интерфейс был достаточным. – AlexS
В большинстве случаев я работаю с сообщениями как экземпляры базового класса, но иногда мне они нужны как конкретный тип (например: это сообщение, входящее или исходящее в чате). И я думаю, что иметь собственную таблицу для каждого типа сообщений сделает программу более сложной и неэффективной - для рисования диалогового окна на экране потребуется доступ к таблицам с несколькими столами ... – Art