Android geliştirme için iyi ORM araçları var mı? [kapalı]


285

Android ('gPhone') üzerinde çalışan herkes bunun için iyi bir ORM aracı bulabileceğim bir yer var mı veya biliyor mu? Kod Java ile yazılmıştır ve veritabanı SQLite'dir. Ne bulmak istiyorum nesne tanımı verilen bir araç otomatik olarak tabloları ve CRUD işlevleri (bu harika olurdu) oluşturabilir, ya da engelleme, tablo tanımı, nesne tanımı alabilen bir araç, ve CRUD işlevini otomatik olarak oluşturun. Ovmak, tüm bunların veritabanı erişiminin nasıl çalıştığına dair kendi sözleşmeleri olan Android çerçevesinde gerçekleşmesi gerektiğidir.


Şu an müsait olduğunu sanmıyorum.
mparaz

2
Onun 2014. Ben kimse bahsetmedi beri Sprinkles ( github.com/emilsjolander/sprinkles ) bahsetmek düşündüm .. github, meaven merkezi, içerik gözlemciler, kontrol etmeye değer 500 yıldız
AndroidGecko

Yazılım Ağacı, kısa süre önce Android için basit ama güçlü ve esnek bir ORM olan JDXA'yı piyasaya sürdü . Kalıtım, bire bir, bire çok, çoktan bire ve çoktan çoka ilişkilere destek olur. JDXA'nın POJO (Düz Eski Java Nesneleri) dostu müdahaleci olmayan programlama modeli, Java sınıflarınızı herhangi bir şekilde değiştirmenizi gerektirmez: - Etki alanı sınıflarınızı herhangi bir temel sınıftan alt sınıflamaya gerek yoktur - Kaynak kodunuzu ek açıklamalarla karıştırmanıza gerek yok - DAO sınıflarına gerek yok - Kaynak kodu oluşturma yok
Damodar Periwal


Ek kütüphane bağımlılıkları olmadan düz doğal Android kodunu tercih ederseniz, SQLite eş sınıf kodu üreteci örneğine bir göz atın . Ek açıklama tabanlıdır ve birleştirilmiş birincil anahtarları, birleştirilmiş benzersiz kısıtlamaları ve dizinlemeyi destekler.
RookieGuy

Yanıtlar:


111

ORMLite paketim hakkında 0.02 dolarımı buraya ekleyeceğimi düşündüm .

Hazırda Bekletme için hafif bir alternatiftir ve Android'de SQLite'ı desteklemek için yerel Android OS veritabanı çağrılarını kullanır. Ayrıca diğer mimarilerde JDBC kullanan diğer birçok veritabanı türünü de destekler. ORMLite soruları için bir Android posta listemiz var .


1
ORMLite (bir | çok) -to- (çok | bir) ilişki için yerleşik desteğe sahip mi? Bu konuda fazla bilgi bulamıyorum ... Değilse, bunun için planlar var mı?
ferdystschenko

1
"Destek" ile ne demek istediğinize bağlı. " Birbirinden çoğa " nasıl "yabancı nesnelerin" nasıl kullanılacağına dair bazı örnek kodlar vardır ve çoktan çoğa ( ormlite.com/docs/examples ) gerçekleştirmek için birleştirme tablolarının nasıl kullanılacağına ilişkin örnekler vardır . Daha fazla soru ile kullanıcı listesine gönderin ( groups.google.com/group/ormlite-user ).
Gri

7
Evet, kesinlikle ActiveAndroid'den daha büyük. Elbette çok daha fazla işlevsellik. AA lisansının aksine ücretsiz. Ancak boyut hedefse, ORMLite sizin için değildir.
Gri

4
@Gray Ironic "Lite" olması gerektiği için: P
Salman von Abbas

5
Gerçekten de @SalmanPK. Değişen derecelerde lite olmasına rağmen. :-)
Gri

66

Bu soru yaşlanamaz, ancak önerilen çerçeveler olabilir. Yani, önce karşılaştırma için bu tür çerçevelerde önemli bulduğum şeylerin bir listesi:

  • Maven veya Gradle eseri var mı? (açıkçası maven veya gradle kullanmanıza bağlı olarak büyük bir artı)
  • Koda, etkinliği yargılamak için taahhütlere hızlı bir genel bakış da dahil olmak üzere kolay bir şekilde erişilebilir mi? (github'da barındırılan kod benim için kesin bir artı, bu konuda)
  • Sürüm yönetimi: bunun için sürüm / sürüm etiketleri ve eserleri var mı? (github'da barındırılan ve git klonunu gerektiren veya indirme için ana tarball'ı öneren bazıları var - benim için serbest bırakma etiketleri README'de ayarlanıp ele alınmazsa büyük bir eksi)
  • Boyut önemli olduğundan, almanın kolay olduğu bazı ipuçları verdim (hiçbir şey indirmedim, bu yüzden serbest bırakma eserleri sunmayan projelerden boyutlar yok)

Ve işte yukarıdaki noktalara dair notlar içeren bir çerçeve listesi. Daha sonra aBatis ve Hadi gibi görünüyordum ama 2011'den sonra sadece aktivitesi olanları ekledim.

Bunlardan hiçbirini denemedim, ancak günümüzde aktif projeleri listeleyerek mevcut okuyucuları biraz zaman ayırabilirim. Yukarıdaki hususlardan bazılarını karşılayan ve bazı ciddi gelişmelere (bir süre boyunca) devam eden başka projeler biliyorsanız lütfen bir yorum ekleyin.

EDIT (2013 Kasım): listeyi projelerin mevcut durumuna güncelledi. Bunlardan bazıları Maith / Gradle desteğinin yanı sıra github depolarına sürüm etiketleri ekledi. İyi iş!

EDIT (2015 Nis): listeyi güncelledi, Sprinkles (@AndroidGecko tarafından yapılan yoruma göre) ve Realm.io ekledi.


Realm'i kullanmanızı şiddetle tavsiye ederim, çalışması gerçekten hızlı ve akıcı!
Crono

39

Performans ve kod boyutu önemliyse , yeşil DAO'ya bakın . Ben onun yazarıyım ve başka bir ORM oluşturma motivasyonum sıcak noktalarda yansımayı önlemekti. GreenDAO'nun ORMLite'den 4 kat daha hızlı olabileceği ortaya çıktı. Ayrıntılar için özellik sayfasına bakın.


5
Oldukça iyi görünüyor, ama
Dao'yu

4
Evet, kod oluşturmak geliştiriciler için ek bir adımdır, ancak uygulamada size büyük bir performans kazandırır. Hem önyükleme hem de veritabanı sonuçlarını ayrıştırma önemli ölçüde daha hızlıdır. Diğer araçlar, Android'de acımasızca yavaş olan yansımaya güveniyor.
Markus Junginger

1
Projelerimde greendao kullanıyorum ve bundan çok memnunum.
mabac

3
@greenrobot lib'inizi kullanan bazı "büyük uygulamalar" vitrinleriniz var mı?
StErMi

1
@StErMi Yolu greenDAO kullanıyor. > 1 M kurulumları var. Bkz. Github.com/greenrobot/greenDAO/issues/20#issuecomment-13278922
Markus Junginger


9

ActiveAndroid (20 $) tam olarak ihtiyacınız olan şey gibi görünüyor.


14
Burada kayda değer bir şey denemediğinizi biliyorum, ancak SO'daki kendi ürünlerinizden birini belirttiğinizde lütfen bağlantılarınızdaki bağlılığınızı açıklayabilir misiniz? Adınızın bağlantılı sayfanın altbilgisinde olduğunu biliyorum, ancak biz halı sahalarını yıkmaya çalışıyoruz (ki bu değil), bu yüzden herkesten aynı açıklama yönergelerini izlemesini istiyoruz. Teşekkürler.
Kertenkele Bill

4
Sadece bir uyarı, ActiveAndroid ücretsiz değil.
gak

7
ActiveAndroid artık ücretsiz ve açık kaynak kodlu - pardom.github.com/ActiveAndroid
Michael Pardo

7

ActiveAndroid'i beğendim. Görünüşe göre Android için özel olarak yazılmış. Bu bana bir artı gibi geliyor.

Ruby on Rails deneyimim var ve ActiveRecord'un Rails yolunu beğendiyseniz, bu kütüphane ile çok hızlı bir şekilde hareket edebilirsiniz.

https://www.activeandroid.com/


Güzel bir çerçeve, ancak org.codehous.jackson kütüphanesi ile çakışıyor, bu yüzden projenizde kullanırsanız ActveAndroid'i kullanamazsınız
endryha

1
Nasıl çatışır? Tracker.activeandroid.com'da bir hata olarak rapor ettiniz mi?
Michael Pardo

Belki de özelliklerin çoğuna sahip androrm.the-pixelpla.net bir göz atın ve ben biraz daha söyleyebilirim. Artı: ücretsiz ve açık kaynak.
philgiese


6

Ayrıca Android'de bir ORM arıyorum. Ben test ActiveAndroid , NeoDatis ve db4o ve ben son iki kişiden biri kullanacağız düşünüyorum.

NeoDatis ve db4o gerçekten benzer, bu yüzden en iyisini seçmek için bazı tavsiyeler istiyorum. Birisi projesinde birini kullanıyor mu? Ücretsiz ve ücretli uygulama için kullanacağım, ancak ikisinin Android için herhangi bir lisans sınırlaması olmadığı anlaşılıyor.

Burada NeoDatis'in db4o'dan daha hızlı olduğunu söyleyen bir kriter var , ancak fikrimi buna dayandırabilir miyiz bilmiyorum.


Db40 ve NeoDatis nesne veritabanlarıdır, sadece bunların boyutu Android'de herhangi bir kullanım için tamamen yasaklayıcıdır
Bostone

@ DroidIn.net yorumunuzu sürdüren bir bağlantı sağlayabilir misiniz?
Sergio


2

Aptana'dan ActiveRecordJS , gPhone üzerinde çalışması gereken bir Javascript ORM'dir. Jaxer ve Gears ile çalışacak şekilde tasarlanmıştır. Jaxer Adaptörlerini kullandığınızda, SQLLite'a bağlanabilirsiniz.

GÜNCELLEME: Bunu açıkça belirttiğimi sanmıyorum, ancak ActiveRecordJS, istemci tarafında çalışan bir ORM'dir, bu da gPhone'da size bir avantaj olabilir.


Java kodunda mı? Veya JavaScript kodunda mı?
GWLlosa

Bahsettiğiniz şeyin tamamen tarayıcı tabanlı (Web) uygulamalar için tasarlanmış bir Javascript çözümü olduğundan eminim. Android için yerel uygulama geliştirme ile nasıl ilişkili olduğunu görmüyorum.
Brian Lacy


1

Android için JPA ORM uygulamasını kendi geliştirdim. Henüz tam özellikli değil, ancak @Entity, @Id, @Column ek açıklamalarıyla sınıfa açıklama ekleyebilir ve SQLite veritabanından depolanabilen ve alınabilen JPA varlıkları alırsınız. Herkese göndermeden önce biraz daha özelliğe ve temizliğe ihtiyacı var, ancak yeterli ilgi varsa çabamı hızlandırabilir.


Kulağa ilginç geliyor, zaten var mı? denemek / denemek? Cheers, Martin
MartinGrotzke

Bir yıldan fazla bir süre sonra, bu konudaki ilerleme nasıl? Android'de JPA + Ek Açıklamalar BÜYÜK geliyor!
Spidey



0

Db4o (v. 8) ile olumsuz bir deneyim oldu: indeksleme düzgün çalışmadı (istisna vb.). Bu yüzden nesne yapısında nesne varken yabancı tablolarda kopyalar oluşturmayı nasıl önleyemedim. Sorum daha ayrıntılı bir açıklama . Umarım bir gün daha iyi olur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.