Какие-нибудь хорошие инструменты ORM для разработки под Android? [закрыто]

285

Кто-нибудь, работающий на Android («gPhone»), знает или знает место, где я могу найти для него хороший инструмент ORM? Код написан на Java, а база данных - SQLite. То, что я хотел бы найти, это инструмент, который дает определение объекта, может автоматически генерировать таблицы и функции CRUD (это было бы здорово), или, если не считать этого, инструмент, который может принимать определение таблицы, определение объекта, и автоматически генерировать функциональность CRUD. Проблема в том, что все это должно происходить в рамках Android, которая имеет свои собственные соглашения о том, как работает доступ к базе данных.

GWLlosa
источник
Я не думаю, что есть какие-либо доступные сейчас.
mparaz
2
его 2014. Я думал, что упомяну Sprinkles ( github.com/emilsjolander/sprinkles ), так как никто не упомянул об этом .. 500 звезд на github, на meaven central, обозреватели контента, стоит проверить
AndroidGecko
Это 2015. Software Tree недавно выпустила JDXA , простой, но мощный и гибкий ORM для Android. Поддерживает наследование, один к одному, один ко многим, многие к одному и многие ко многим отношениям. Модель дружественного ненавязчивого программирования JDXA POJO (Plain Old Java Objects) не требует, чтобы вы изменяли ваши классы Java каким-либо образом: - Нет необходимости создавать подклассы классов вашего домена из любого базового класса - Нет необходимости загромождать исходный код аннотациями - Нет необходимости в классах DAO - Генерация исходного кода не требуется
Damodar Periwal
Посмотрите это хорошее руководство по JDXA ORM .
Дамодар Перивал
Если вы предпочитаете простой натуральный код Android без дополнительных библиотечных зависимостей, взгляните на пример генератора кода однорангового класса SQLite . Он основан на аннотациях и поддерживает объединенные первичные ключи, объединенные уникальные ограничения и индексацию.
RookieGuy

Ответы:

111

Думаю, я просто добавлю свои 0,02 доллара о пакете ORMLite .

Это легкая замена Hibernate и использует собственные вызовы базы данных ОС Android для поддержки SQLite на Android. Он также поддерживает множество других типов баз данных, использующих JDBC на других архитектурах. У нас есть список рассылки Android для вопросов ORMLite.

Серый
источник
1
Имеет ли ORMLite встроенную поддержку отношений (один | много) - (много | один)? Я не могу найти много информации об этом ... Если нет, есть ли планы на это?
Фердистщенко
1
Зависит от того, что вы подразумеваете под «поддержкой». Ниже приведен пример кода о том, как использовать «чужие объекты», который вам подходит «один-ко-многим», и примеры того, как использовать соединительные таблицы для выполнения «многие-ко-многим» ( ormlite.com/docs/examples ). Опубликовать в списке пользователей больше вопросов ( groups.google.com/group/ormlite-user ).
Серый
7
Да, это, конечно, больше, чем ActiveAndroid. Конечно, гораздо больше функциональности. Также бесплатное ПО в отличие от лицензии АА. Но если целью является размер, ORMLite не для вас.
Серый
4
@ Серый Ироничный, так как он должен быть "Lite": P
Салман фон Аббас
5
Действительно @SalmanPK. Хотя есть разные степени облегченности. :-)
Серый
66

Этот вопрос не может устареть, но предложенные рамки могут. Итак, вот первый список того, что я считаю важным в таких рамках для сравнения:

  • Есть ли артефакт Maven или Gradle? (это большой плюс в зависимости от того, используете ли вы maven или gradle, очевидно)
  • Доступен ли код простым способом, включая быстрый обзор коммитов для оценки активности? (код, размещенный на github, является для меня определенным плюсом)
  • Управление релизами: есть ли релизы / метки релиза и артефакты для него? (некоторые размещаются на github и требуют либо git clone, либо предлагают основной архив для загрузки - для меня большой минус, если даже теги релиза не установлены и не учтены в README)
  • поскольку размер имеет значение, я выдвинул некоторые подсказки, где было легко обойтись (я ничего не скачивал, поэтому из тех проектов, которые не предлагают артефактов выпуска, нет размеров)

А вот список фреймворков с примечаниями по пунктам выше. Я посмотрел больше на aBatis и Hadi, но я добавил только те, которые были активны после 2011 года.

Я не пробовал ни одного из них, но, возможно, я смогу сэкономить немного времени читателям, перечислив в настоящее время активные проекты. Пожалуйста, добавьте комментарий, если вам известны другие проекты, которые удовлетворяют некоторым из вышеперечисленных пунктов и имеют серьезное развитие (в течение некоторого времени).

РЕДАКТИРОВАТЬ (ноябрь 2013 г.): обновлен список с учетом текущего состояния проектов. Некоторые из них добавили теги релиза в свои репозитории github, а также поддержку Maven / Gradle. Хорошая работа!

РЕДАКТИРОВАТЬ (апрель 2015 г.): обновлен список, добавлены Sprinkles (согласно комментарию @AndroidGecko) и Realm.io.

Risadinha
источник
Я настоятельно рекомендую использовать Realm, это действительно быстро и плавно!
Crono
39

Если производительность и размер кода имеют значение, проверьте greenDAO . Я его автор, и моей мотивацией для создания другого ORM было избежать отражения в горячих точках. Оказалось, что greenDAO может быть в 4 раза быстрее, чем ORMLite. Проверьте страницу функции для деталей.

Маркус Юнгингер
источник
5
Выглядит неплохо, но необходимость генерировать Дао для меня выключена :(
Chris.Jenkins
4
Да, генерация кода - это дополнительный шаг для разработчиков, но он значительно экономит ваше приложение. Результаты начальной загрузки и анализа базы данных значительно быстрее. Другие инструменты полагаются на рефлексию, что крайне медленно в Android.
Маркус Юнгингер
1
Я использую greenDao в своих проектах, и я очень доволен этим.
МАБАК
3
@greenrobot есть ли у вас витрины "больших приложений", использующих вашу библиотеку?
StErMi
1
@StErMi Path использует greenDAO. У них> 1 млн. Установок. См. Github.com/greenrobot/greenDAO/issues/20#issuecomment-13278922
Маркус Юнгингер
10

Я не знаю ничего, о чем вы просите, но есть альтернатива SQLite, которая может оказаться полезной, если ваши требования к архитектуре гибкие. Возможно, стоит проверить db4o :

SLF
источник
у меня были хорошие результаты с DB40 ... хочу проверить Active Android, хотя ...
Бен
1
Activeandroid.com выглядит круто, я с нетерпением жду, чтобы дать ему вращение
slf
9

ActiveAndroid ($ 20) выглядит так, как будто это именно то, что вам нужно.

Майкл Пардо
источник
14
Я знаю, что вы здесь не пробуете ничего странного, но не могли бы вы рассказать о своей принадлежности в своих постах, когда упомянули один из ваших собственных продуктов на SO? Я знаю, что ваше имя находится в нижнем колонтитуле связанной страницы, но мы пытаемся бороться с астротурфингом (а это не так), поэтому мы просим всех следовать одним и тем же правилам раскрытия информации. Спасибо.
Билл Ящерица
4
Просто один на один, ActiveAndroid не является бесплатным.
Гак
7
ActiveAndroid теперь бесплатный и с открытым исходным кодом - pardom.github.com/ActiveAndroid
Майкл Пардо,
7

Мне понравился ActiveAndroid. Это написано специально для Android, кажется. Это чувствует себя как плюс для меня.

У меня есть некоторый опыт работы с Ruby on Rails, и если вам нравится RailR-способ ActiveRecord, вы можете очень быстро начать работать с этой библиотекой.

https://www.activeandroid.com/

Тони Топпер
источник
Хороший фреймворк, но он конфликтует с библиотекой org.codehous.jackson, поэтому, если вы используете его в своем проекте, вы не сможете использовать ActveAndroid
endryha
1
Как это конфликтует? Вы сообщили об этом как об ошибке на tracker.activeandroid.com ?
Майкл Пардо
Может быть, взгляните на androrm.the-pixelpla.net, он имеет большинство функций, и я бы сказал, даже больше. Плюс: это бесплатно и с открытым исходным кодом.
Philgiese
6

Я также ищу ORM на Android. Я протестировал ActiveAndroid , NeoDatis и db4o , и я думаю, что я буду использовать один из двух последних.

NeoDatis и db4o действительно похожи, поэтому я хотел бы дать несколько советов, чтобы выбрать лучший. Кто-то использует один из них в своем проекте? Я буду использовать его для бесплатного и платного приложения, но похоже, что у этих двух нет никаких ограничений лицензии для Android.

Существует ориентир здесь , что , кажется, говорят , что NeoDatis быстрее , чем db4o, но я не знаю , если мы можем основывать свое мнение на этот счет .

Chayy
источник
Db40 и NeoDatis - это объектные базы данных, только размер их абсолютно запрещен для использования на Android
Bostone,
@ DroidIn.net не могли бы вы предоставить ссылку, которая поддерживает ваш комментарий?
Серхио
3

Еще один новичок: Android-Active-запись. Это очень легкий и простой в использовании каркас персистентности для Android, поддерживаемый SQLite http://code.google.com/p/android-active-record/

Владимир Кроз
источник
Похоже, он все еще находится на ранней стадии разработки, но за ним стоит следить!
GWLlosa
Пробовал - это хорошее начало, но нужно много работы, чтобы быть готовым к прайм-
тайму
2

ActiveRecordJS от Aptana - это Javascript ORM, который должен работать на gPhone. Он предназначен для работы с Jaxer и Gears. Когда вы используете адаптеры Jaxer, вы можете подключиться к SQLLite.

ОБНОВЛЕНИЕ: я не думаю, что я ясно дал понять, но ActiveRecordJS - это ORM, который работает на стороне клиента, что может быть преимуществом для вас на gPhone.

Дэвид Роббинс
источник
В коде Java? Или в коде JavaScript?
GWLlosa
Я уверен, что вы говорите о Javascript-решении, предназначенном исключительно для браузерных (веб) приложений. Я не понимаю, как это связано с разработкой приложений для Android.
Брайан Лейси
1

Я разработал собственную реализацию JPA ORM для Android. Он еще не полностью завершен, но вы можете аннотировать класс с помощью аннотаций @Entity, @Id, @Column и получать объекты JPA, которые можно сохранять и извлекать из базы данных SQLite. Прежде чем я опубликую его для публики, нужно еще кое-что добавить и очистить, но если будет достаточно интереса, это может ускорить мои усилия.

Павел Лахода
источник
Звучит интересно, у вас уже есть с.т. посмотреть / попробовать? Приветствия, Мартин
MartinGrotzke
Спустя год, как успехи в этом? JPA + Аннотации на Android звучит ОТЛИЧНО!
Spidey
1

Хотя это старый пост, тема все еще актуальна. Поэтому я хочу поделиться интересной статьей и хорошим подходом к решению большинства проблем, упомянутых в вопросе:

http://blog.codecentric.de/en/2011/04/android-persistence-accelerated-small-inhouse-orm/

Надеюсь, кто-нибудь найдет это полезным, как и я!

Sgali
источник
1

Мой собственный DroidParts /http://droidparts.org/ только что достиг версии 0.5. Это библиотека DI / ORM и многое другое.
Не много документации, но включает в себя пример приложения.

Янченко
источник
1
Может быть, добавление надлежащей документации - это хорошая идея.
Субин Себастьян
0

Был негативный опыт с db4o (v. 8): индексация не работала должным образом (исключение и т. Д.). Поэтому мне не удалось избежать создания дубликатов во внешних таблицах при наличии объекта в структуре объекта. Более подробное объяснение в моем вопросе . Надеюсь, однажды это будет лучше.

Алексей Малованый
источник