TranE91
@TranE91
Senior Android Engineer

Android SQLite какой ORM фреймворк используете вы?

Столкнулся с проблемой выбора легковесного и быстрого ORM фрейморка на платформе Android. Долгое время использовал ORMLite. Столкнулся с проблемой скорости работы и быстроты разворачивания данного фреймворка в проектах. Для этого провел ресерч имеющихся и популярных библиотек для работы с базой данных в Android, но и тут все не так просто. За основу ставил себе определенный перечень задач: легковесность, поддержка sqlite, быстрая интеграция, высокая скорость работы.

ORMLite - взято за основу, ибо долгое время боялся дотронуться к чему-либо другому
Плюсы:
  • Быстрая интеграция
  • Масштабируемость
  • Гибкость в настройке
Минусы:
  • Работа в Runtime
  • Скорость работы
  • Избыточность и трудозатратность при написании DAO
DBFlow - заинтриговала простота в интеграции и больший чем в ORMLite перечень настроек
Плюсы:
  • Быстрая интеграция
  • Гибкость в настройке
  • Великий перечень настроек
  • Работа в compile time
  • Поддержка работы с MVVM
Минусы:
  • Скорость работы, ниже чем у ORM
  • Очень низкая скорость работы(выборки) со вложенными коллекциями
Realm - купился на рекламу
Плюсы:
  • Быстрая интеграция
  • Работа в compile time
  • Очень быстрая скорость работы
  • Поддержка RxJava
Минусы:
  • Гибкость в настройке
  • Отсутсвие автоинкремента
  • Потоконезащищенность(нельзя произвести выборку элементов из одного потока, для дальнейшего использования в другом, без использования RxJava)
  • Невозможность переопределения equals и toString в элементе БД
  • Недокументированные подводные камни и ограничения
  • Избыточность при использовании кастомных полей в объекте БД
  • Совместимость с SQLite( вроде как realm использует свой формат, обратной конверсии из формата realm в SQLite я так и не нашел)


Некоторые ORM детально даже не рассматривал( Sugar ORM - сложность в развертывании, а скорость работы желает лучшего, ActiveAndroid и GreenDAO - избыточность из-за DAO )
Исходя из этого перечня, хотелось бы спросить мнения других специалистов, есть ли какие фреймворки с функционалом работы как у DBFLow или ORMLite и скоростью работы как у Realm или нативного SQLite. Либо стоит пересмотреть выбор из вышеописанных ?
  • Вопрос задан
  • 5913 просмотров
Решения вопроса 1
@georgeci
Раньше использовал OrmLite. Правда проблем при написании DAO не заметил.
Для GreenDAO есть генератор DAO классов.
Тут либо положиться на рефлексию и получить медленную работу или написать их самим, получив много однообразного кода.

Затем использовал SQLBrite и DAO к нему.
Сейчас для разнообразия использую Stor.io, но это уже просто обёртка над SQLite как и SQLBrite без DAO.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
TranE91
@TranE91 Автор вопроса
Senior Android Engineer
Тайминги работы:
10_000 Элементов со вложенными 10-ю элементами в каждом.
bcf0c98cb3934a13b5fbe37cb55e47ca.png
Ответ написан
Комментировать
ImangazalievM
@ImangazalievM
Android-программист
5 лучших ORM для Android - java-help.ru/5-best-android-orms
Обзор лучшей AndroidORM — ActiveAndroid - java-help.ru/activeandroid-orm-review
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы