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

277

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

  • 0
    Я не думаю, что есть какие-либо доступные сейчас.
  • 2
    его 2014. Я думал, что упомяну Sprinkles ( github.com/emilsjolander/sprinkles ), так как никто не упомянул об этом. 500 звезд на github, на центральном мелководье, обозреватели контента, стоит проверить
Показать ещё 3 комментария
Теги:
orm
crud

16 ответов

72
Лучший ответ

Этот поток может дать вам возможность изучить: Легкие альтернативы для спящего режима

102

Думаю, что я просто добавлю свой 0.02 $в свой пакет ORMLite:

http://ormlite.com/

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

  • 1
    Имеет ли ORMLite встроенную поддержку отношений (один | много) - (много | один)? Я не могу найти много информации об этом ... Если нет, есть ли планы на это?
  • 1
    Зависит от того, что вы подразумеваете под «поддержкой». Ниже приведен пример кода о том, как использовать «чужие объекты», который вам подходит «один-ко-многим», и примеры того, как использовать соединительные таблицы для выполнения «многие-ко-многим» ( ormlite.com/docs/examples ). Опубликовать в списке пользователей больше вопросов ( groups.google.com/group/ormlite-user ).
Показать ещё 4 комментария
61

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

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

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

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

EDIT (2013 ноябрь): обновил список до текущего состояния проектов. Некоторые из них добавили теги релиза в свои репозитории github, а также поддержку Maven/ Gradle. Хорошая работа!

EDIT (2015 Апр): обновлен список, добавлены спринклеры (согласно комментарию @AndroidGecko) и Realm.io.

  • 0
    Я настоятельно рекомендую использовать Realm, это действительно быстро и плавно!
40

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

  • 5
    Выглядит неплохо, но необходимость генерировать Дао для меня выключена :(
  • 4
    Да, генерация кода - это дополнительный шаг для разработчиков, но он значительно экономит ваше приложение. Результаты начальной загрузки и анализа базы данных значительно быстрее. Другие инструменты полагаются на рефлексию, что крайне медленно в Android.
Показать ещё 13 комментариев
10

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

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

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

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

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

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

https://www.activeandroid.com/

  • 0
    Хороший фреймворк, но он конфликтует с библиотекой org.codehous.jackson, поэтому если вы используете его в своем проекте, вы не сможете использовать ActveAndroid
  • 1
    Как это конфликтует? Вы сообщили об этом как об ошибке на tracker.activeandroid.com ?
Показать ещё 1 комментарий
6

https://github.com/ahmetalpbalkan/orman

Структура Orman может помочь вам. Он специально разработан для этого и очень мал и полезен.

6

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

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

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

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

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

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

http://hadi.sourceforge.net

Этот инструмент очень прост и прост в использовании.

2

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

UPDATE: Я не думаю, что я дал понять, но ActiveRecordJS - это ORM, который работает на стороне клиента, что может быть для вас преимуществом на gPhone.

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

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

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

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

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

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

1

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

  • 0
    Звучит интересно, у вас уже есть с.т. посмотреть / попробовать? Ура, Мартин
  • 0
    Спустя год, как успехи в этом? JPA + аннотации на Android звучит здорово!
0

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

Сообщество Overcoder
Наверх
Меню