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


285

Кожен, хто працює на Android ('gPhone'), має або знає місце, де я можу знайти хороший інструмент ORM для цього? Код написаний на Java, а база даних - SQLite. Мені хотілося б знайти інструмент, який, даючи визначення об'єкта, може автоматично генерувати таблиці та функції CRUD (що було б дивним) або, забороняючи це, інструмент, який може приймати визначення таблиці, визначення об'єкта, та автоматично генерувати функціональність CRUD. Річ у тому, що все це має відбуватися в рамках Android, який має власні умови щодо того, як працює доступ до бази даних.


Я не думаю, що зараз є доступні.
mparaz

2
її 2014 рік. Я думав, що згадаю Спринкс ( github.com/emilsjolander/sprinkles ), оскільки ніхто про це не згадував .. 500 зірок на github, на meaven central, спостерігачі за контентом, варто перевірити
AndroidGecko

Це 2015. Software Tree нещодавно випустила JDXA , простий, але потужний і гнучкий ORM для Android. Підтримує успадкування, один до одного, один до багатьох, багато до одного, і багато до багатьох відносин. Другої, не нав'язливої ​​моделі програмування JDXA (Звичайні старі об'єкти Java) не вимагають від вас жодним чином змінювати свої класи Java: - Не потрібно підкласувати доменні класи з будь-якого базового класу - Не потрібно захаращувати свій вихідний код анотаціями - Немає потреби в заняттях DAO - Не
створюється

Ознайомтеся з цим приємним підручником з JDXA ORM .
Дамодар Периваль

Якщо ви віддаєте перевагу звичайному природному коду Android без додаткових залежностей від бібліотеки, подивіться на приклад генератора коду рівних класів SQLite . Він заснований на анотації та підтримує комбіновані первинні ключі, поєднані унікальні обмеження та індексацію.
RookieGuy

Відповіді:


111

Думав, що я просто додам сюди $ 0,02 про мій пакет ORMLite .

Це легка заміна в режимі глибокого сну і використовує вбудовані дзвінки бази ОС Android для підтримки SQLite на Android. Він також підтримує безліч інших типів баз даних, що використовують JDBC в інших архітектурах. У нас є список розсилки Android для запитань щодо ORMLite.


1
Чи ORMLite має вбудовану підтримку (одне | багато) -то- (багато | одне) відносин? Я не можу знайти багато інформації про це ... Якщо ні, чи є плани на це?
Фердищенко

1
Залежить від того, що ви маєте на увазі під «підтримкою». Існує деякий приклад коду щодо використання "сторонніх об'єктів", який ви перетворюєте на один-до-багатьох, і є приклади, як використовувати таблиці приєднання для виконання багато-до-багатьох ( ormlite.com/docs/examples ). Опублікуйте у списку користувачів додаткові запитання ( groups.google.com/group/ormlite-user ).
Сірий

7
Так, це, безумовно, більше, ніж ActiveAndroid. Набагато більше функціональних можливостей. Також безкоштовно, на відміну від ліцензії AA. Але якщо мета - розмір, ORMLite не для вас.
Сірий

4
@Gray Ironic, оскільки це має бути "Lite": P
Салман фон Абас,

5
Дійсно @SalmanPK. Хоча є різний ступінь літератури. :-)
Сірий

66

Це питання не може старіти, але запропоновані рамки можуть. Отже, ось спочатку список того, що мені здається важливим у таких рамках для порівняння:

  • Чи є артефакт Мейвен чи Градле? (це великий плюс залежно від того, чи використовуєте ви мавен або градель, очевидно)
  • Чи доступний код легким способом, включаючи швидкий огляд зобов'язань, щоб оцінити активність? (код, розміщений на github, є для мене певним плюсом)
  • Управління випусками: чи існують теги випуску / випуску та артефакти для цього? (Є деякі, які розміщені на github і вимагають або git-клону, або пропонують майстер-тарбол для завантаження - для мене великий мінус, якщо навіть теги релізів не встановлені та адресовані в README)
  • що стосується розміру, я виклав кілька підказок, куди було легко потрапити (я нічого не завантажував, тому з тих проектів, які не пропонують артефактів випуску, розмірів немає)

А ось перелік рамок із примітками до пунктів вище. Я подивився на таких, як Абатіс і Хаді, але я додав лише тих, хто мав деяку активність після 2011 року.

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

EDIT (2013 листопада): оновив список до поточного стану проектів. Деякі з них додали теги випуску до своїх репозиторіїв Github, а також підтримку Maven / Gradle. Гарна робота!

EDIT (2015 квіт.): Оновлено список, додано Спринки (за коментарем @AndroidGecko) та Realm.io.


Я настійно рекомендую використовувати Realm, це дійсно швидко та рівномірно!
Кроно

39

Якщо продуктивність та розмір коду важливі, ознайомтеся з greenDAO . Я її автор, і мотивацією до створення іншого ORM було уникати роздумів у гарячих точках. Виявилося, що greenDAO може бути в 4 рази швидшим, ніж ORMLite. На детальній сторінці ознайомтеся на сторінці функції .


5
Виглядає досить непогано, але необхідність генерувати Дао - це поворот для мене :(
Chris.Jenkins

4
Так, генерування коду є додатковим кроком для розробників, але це заощаджує вам велику продуктивність у додатку. Як результати завантаження, так і розбір баз даних значно швидші. Інші інструменти покладаються на рефлексію, яка в Android жорстоко повільна.
Маркус Юнгінгер

1
Я використовую greenDao у своїх проектах, і мені це дуже приємно.
mabac

3
@greenrobot У вас є кілька вітрин "великих додатків", використовуючи вашу ліб?
StErMi

1
@StErMi Path використовує greenDAO. У них встановлено> 1 М установок. Дивіться github.com/greenrobot/greenDAO/isissue/20#issuecomment-13278922
Markus

10

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


У мене були хороші результати з DB40 ... хотіла б замовити Активний Android, хоча ...
Бен

1
activeandroid.com виглядає круто, я з нетерпінням чекаю надати йому спін
slf

9

ActiveAndroid ($ 20) виглядає так, що це саме те, що вам потрібно.


14
Я знаю, що ви тут не намагаєтеся нічого зручного, але чи можете ви розкрити свою приналежність у своїх публікаціях, коли ви згадуєте про свій власний продукт на SO? Я знаю, що ваше ім’я знаходиться в нижній частині нижньої частини пов’язаної сторінки, але ми намагаємось зламати астротурфінг (чого це не так), тому ми просимо всіх дотримуватися тих самих рекомендацій щодо розкриття інформації. Дякую.
Білл Ящірка

4
Лише вгору, ActiveAndroid не безкоштовний.
gak

7
ActiveAndroid тепер безкоштовний і з відкритим кодом - pardom.github.com/ActiveAndroid
Michael Pardo

7

Мені сподобався ActiveAndroid. Це написано спеціально для Android. Це відчуває мене як плюс.

У мене є досвід Ruby on Rails, і якщо вам подобається спосіб Rails на ActiveRecord, ви можете дуже швидко рухатися з цією бібліотекою.

https://www.activeandroid.com/


Хороший фреймворк, але він суперечить бібліотеці org.codehous.jackson, тому, якщо ви будете використовувати його у своєму проекті, ви не зможете використовувати ActveAndroid
endryha

1
Як це конфлікт? Ви повідомили про це як про помилку на tracker.activeandroid.com ?
Майкл Пардо

Можливо, подивіться на androrm.the-pixelpla.net, він має більшість функцій, і я б сказав, ще кілька. Плюс: це безкоштовно та з відкритим кодом.
Філгізес


6

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

NeoDatis та db4o дійсно схожі, тому я хотів би порадити вибрати найкращий. Хтось використовує один із них у своєму проекті? Я буду користуватися ним безкоштовно і платним додатком, але, схоже, у них немає жодного обмеження ліцензії для Android.

Існує орієнтир тут , що , здається, говорять , що NeoDatis швидше , ніж db4o, але я не знаю , якщо ми можемо засновувати свою думку на цей рахунок .


Db40 та NeoDatis - це об’єктні бази даних, просто розмір цих програм абсолютно заборонений для будь-якого використання на Android
Bostone

@ DroidIn.net ви могли б надати посилання, яке підтримує ваш коментар?
Серхіо

3

Ще один новачок: android-active-record. Це дуже легкий і простий у використанні стійкий фреймворк для Android, підтримуваний SQLite http://code.google.com/p/android-active-record/


Схоже, його ще в ранньому розвитку, але варто слідкувати за цим!
GWLlosa

Спробував - це приємний початок, але потрібно зробити багато роботи, щоб бути готовим до
найголовнішого

2

ActiveRecordJS від Aptana - це ORM Javascript, який повинен працювати на 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/

Сподіваюся, хтось вважає це таким же корисним, як і я!



0

Мав негативний досвід роботи з db4o (т. 8): індексація не працювала належним чином (виняток тощо). Тож мені не вдалося, як уникнути створення дублікатів у закордонних таблицях, коли об’єкт є в структурі об'єкта. Більш детальне пояснення в моєму запитанні . Сподіваюся, одного дня буде краще.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.