Green DAO против ORM lite против Active Android

Какой лучший инструмент ORM доступен для Android?

Я вижу, что ORMlite и ActiveAndroid являются наиболее обсуждаемыми, и мой друг предложил мне использовать GreenDAO. Итак, ищете ресурс знаний, который может помочь мне в принятии решений?

Функции, которые я хочу оценить, находятся в свободном доступе (с открытым исходным кодом), хорошая документация, активные форумы, доступная стабильная версия и т. д., которые когда-либо требовались разработчику.


person Ravi G    schedule 03.12.2012    source источник
comment
GreenDao прост в использовании, но у него есть свои ограничения, например, Ex. Кэш нельзя настроить, в отличие от кеша ORMLite, и он не является настоящим ORM. Я объясню свой ответ, в ORMLite вы можете каким-то образом настроить кеш, чтобы запросам не требовался доступ к базе данных, в GreenDao это невозможно, и каждый запрос указывал на базу данных   -  person Nativ    schedule 20.05.2013
comment
спасибо, что задали этот вопрос   -  person necromancer    schedule 30.08.2014
comment
Еще один фактор, о котором следует подумать, — это архитектура Android. ORMLite заставляет вас расширять действие, которое может не работать с некоторыми архитектурами.   -  person stevebot    schedule 30.03.2015
comment
@stevebot, нет, мне не нужно расширять действие, когда вы используете ORMLite   -  person cVoronin    schedule 11.11.2015


Ответы (3)


Я бы предложил ORMlite бесплатное программное обеспечение с открытым исходным кодом и имеет хорошую документацию, а также поддерживает Java и Android.

Он имеет хорошую поддержку разработчиков и многие приложения, работающие на ORMlite (включая разработанные мной :)).

проверьте это сравнение ORMLite и Green DAO для справки.

person R World    schedule 03.12.2012
comment
Спасибо за ответ, но в этом сравнении я не вижу большой разницы между ORMLite и GreenDAO. Я могу найти, что GreenDAO работает лучше, но ORMLite популярен. Все еще пытаюсь понять, что делает ORMLite более популярным, чем тот, который работает хорошо. - person Ravi G; 03.12.2012
comment
Добавление ссылок для поддержки комментариев выше stackoverflow.com/questions/11537561/ greendao-orm.com/features - person Ravi G; 03.12.2012
comment
Что касается сравнения... Я не понимаю использование размера файла JAR в качестве меры "веса" библиотеки. Одна библиотека может иметь множество дополнительных необязательных функций, которые убираются в большинстве проектов. Я думаю, что было бы необходимо построить базовый проект каждого и проверить дельты размера APK для релизных сборок. - person Tom; 31.03.2013
comment
Есть ли также эталонное сравнение других библиотек, таких как SugarOrm? - person android developer; 20.02.2014
comment
Я нашел этот пост год или два назад, когда искал хороший ORM для Android, и это привело меня к использованию ORMLite какое-то время, о чем я сожалею. ORMLite просто не очень хорошо написан для Android. Если вы посмотрите на тесты, они на несколько порядков медленнее, чем другие ORM, такие как GreenDAO, даже на последней версии ОС Android. Это связано с тем, что ORMLite в значительной степени полагается на отражение для всего и работает очень медленно, потому что создает так много объектов, которые необходимо собрать GC. GC в Android = запаздывающий пользовательский интерфейс. Я бы рекомендовал инвестировать время в другой ORM. - person spierce7; 12.09.2014
comment
Мне любопытно, как меняется сравнение с АРТ. @spierce7 упомянул время GC, и в этом весь смысл среды выполнения ART. Кто знает/сделает бенчмарк? - person doplumi; 16.10.2014
comment
@domenicop Я полагаю, что тесты не будут иметь такой радикальной разницы с ART, но еще несколько лет большинство пользователей все еще не будут использовать ART, я бы сказал, что GreenDAO по-прежнему будет вашим лучшим выбором. Не поймите меня неправильно, у GreenDAO есть недостатки (не поддерживает перечисления, не поддерживает аннотации. Люди отправили запросы на добавление этих функций, но они до сих пор не объединили их). Тем не менее, GreenDAO работает быстро и довольно просто, если разобраться. Это мой переход к БД на данный момент и, по крайней мере, в ближайшие несколько лет. - person spierce7; 24.11.2014

Разница между ORMLite и GreenDAO заключается в использовании аннотаций. В то время как ORMLite использует аннотации, GreenDAO этого не делает, как описано здесь.

Аннотации, используемые ORMLite, основаны на отражении, что может негативно сказаться на производительности, особенно на более медленных устройствах Android. Было бы интересно увидеть тесты, сравнивающие ORMLite и GreenDAO.

person Philipp    schedule 25.03.2013
comment
ORMLite для Android может использовать файл конфигурации, сгенерированный во время компиляции, что позволяет полностью избежать использования отражения во время использования приложения. Использование аннотаций важно для меня, поскольку вы можете использовать существующие объекты модели. - person Rafael Nobre; 23.07.2013
comment
Здесь у вас есть проект Github, который сравнивает производительность ORMLite и GreenDao с чистым SQLite: github.com/ littleinc/android-orm-benchmark - person Diego Palomar; 26.11.2014
comment
Аннотации НЕ полагаются на отражение. Библиотеки, использующие аннотации, МОГУТ полагаться на отражение. AndroidAnnotations, Dagger 2, Retrofit, ButterKnife, LoganSquare, Gson, Wire и т. д. являются примерами библиотек, использующих процессор аннотаций, которые генерируют шаблонный код во время компиляции и вообще не используют отражение. - person Louis CAD; 20.11.2015
comment
В данном случае имелись в виду аннотации, используемые ORMLite, а не аннотации вообще. Я обновлю ответ, чтобы сделать это более явным. - person Philipp; 29.01.2016
comment
Для тех, кто попал сюда через Google: эта информация устарела, GreenDAO поддерживает аннотации, начиная с версии 3, выпущенной в июле 2016 года. - person TiEul; 23.11.2016

У меня есть одна проблема с рядом библиотек, которые я использовал, заключается в том, что они требуют, чтобы их инициализация происходила в android.app.Application.onCreate(). Я предпочитаю, чтобы библиотеки позволяли мне выполнять их инициализацию во вторичном потоке, в службе или после того, как я закончил отображать пользовательский интерфейс.

Я считаю, что у Active Android есть эта «проблема», а у ORMLite - нет. Я не уверен насчет GreenDAO.

Действительно ли это проблема, зависит от вашего приложения, но я отмечу, что документы для onCreate() говорят: "Реализации должны быть максимально быстрыми (например, с использованием ленивой инициализации состояния), поскольку время, затраченное на эту функцию, напрямую влияет на производительность запуска первой активности, службы, или получатель в процессе."

Независимо от этого, я отмечу, что ActiveAndroid использует аннотации, как ORMlite, но в отличие от GreenDAO, который использует генерацию кода.

person Tom    schedule 30.03.2013
comment
С другой стороны, сахарный ORM, значительно легкий, не создает этой проблемы. Вы можете делать что-то из внутренних сервисов, если хотите. - person Subin Sebastian; 04.08.2015
comment
JDXA ORM для Android обеспечивает гибкость инициализации в любое время в вашем приложении. жизненный цикл. JDXA следует принципам KISS ORM. JDXA не использует аннотации. Это полностью ненавязчиво для вашей объектной модели предметной области - нет необходимости создавать подклассы из какого-либо базового класса; нет необходимости в классах DAO. - person Damodar Periwal; 21.10.2015
comment
@DamodarPeriwal Мне нужно заполнить форму, чтобы получить его? Нет, спасибо - person TheRealChx101; 14.08.2019