Adakah alat ORM yang bagus untuk pengembangan Android? [Tutup]


285

Adakah yang bekerja di Android ('gPhone') memiliki atau mengetahui tempat di mana saya dapat menemukan alat ORM yang bagus untuk itu? Kode ini ditulis dalam Java, dan basis datanya adalah SQLite. Apa yang ingin saya temukan adalah alat yang memberikan definisi objek, dapat secara otomatis menghasilkan tabel dan fungsi CRUD (yang akan luar biasa), atau, kecuali itu, alat yang dapat mengambil definisi tabel, definisi objek, dan secara otomatis menghasilkan fungsionalitas CRUD. Intinya adalah semua ini harus terjadi dalam kerangka Android, yang memiliki konvensi sendiri tentang cara kerja akses basis data.


Saya tidak berpikir ada yang tersedia sekarang.
mparaz

2
ini 2014. Saya pikir saya akan menyebutkan Sprinkles ( github.com/emilsjolander/sprinkles ) karena tidak ada yang menyebutkannya .. 500 bintang di github, di meaven central, pengamat konten, patut diperiksa
AndroidGecko

Ini tahun 2015. Software Tree baru-baru ini merilis JDXA , ORM yang sederhana namun kuat, dan fleksibel untuk Android. Mendukung warisan, satu ke satu, banyak ke banyak, banyak ke satu, dan banyak ke banyak hubungan. Model pemrograman non-intrusif POJO (Plain Old Java Objects) JDXA yang ramah tidak mengharuskan Anda mengubah kelas Java dengan cara apa pun: - Tidak perlu mensubkelas kelas domain Anda dari kelas dasar mana pun - Tidak perlu mengacaukan kode sumber Anda dengan anotasi - Tidak perlu untuk kelas DAO - Tidak ada generasi kode sumber
Damodar Periwal


Jika Anda lebih suka kode Android alami biasa tanpa dependensi pustaka tambahan lihat contoh generator kode peer class SQLite . Ini berbasis anotasi dan mendukung kunci primer gabungan, gabungan batasan unik dan pengindeksan.
RookieGuy

Jawaban:


111

Saya pikir saya baru saja menambahkan $ 0,02 saya di sini tentang paket ORMLite saya .

Ini adalah pengganti Hibernate yang ringan dan menggunakan panggilan basis data OS Android asli untuk mendukung SQLite di Android. Ini juga mendukung banyak tipe database lain menggunakan JDBC pada arsitektur lain. Kami memiliki milis Android untuk pertanyaan ORMLite.


1
Apakah ORMLite memiliki dukungan bawaan untuk (satu | banyak) -untuk- (banyak | satu) hubungan? Saya tidak dapat menemukan banyak info tentang itu ... Jika tidak, apakah ada rencana untuk ini?
ferdystschenko

1
Tergantung pada apa yang Anda maksud dengan "dukungan". Ada beberapa contoh kode tentang cara menggunakan "objek asing" yang merupakan cara Anda melakukan satu-ke-banyak dan ada beberapa contoh tentang cara menggunakan tabel gabungan untuk mencapai banyak-ke-banyak ( ormlite.com/docs/examples ). Posting ke daftar pengguna dengan lebih banyak pertanyaan ( groups.google.com/group/ormlite-user ).
Gray

7
Ya, ini tentu lebih besar dari ActiveAndroid. Lebih banyak fungsionalitas juga tentu saja. Juga freeware yang bertentangan dengan lisensi AA. Tetapi jika ukuran adalah tujuannya, ORMLite bukan untuk Anda.
Gray

4
@ Gray Ironic karena itu seharusnya "Lite": P
Salman von Abbas

5
Memang @SalmanPK. Meskipun ada berbagai tingkat lite. :-)
Gray

66

Pertanyaan ini tidak bisa menua tetapi kerangka kerja yang disarankan bisa. Jadi, inilah daftar pertama yang menurut saya penting dalam kerangka kerja seperti itu untuk perbandingan:

  • Apakah ada artefak Maven atau Gradle? (itu nilai tambah besar tergantung pada apakah Anda menggunakan maven atau gradle, jelas)
  • Apakah kode dapat diakses dengan mudah termasuk ikhtisar cepat tentang komitmen untuk menilai kegiatan? (kode yang diinangi pada github adalah nilai tambah yang pasti bagi saya, dalam hal ini)
  • Manajemen rilis: apakah ada tag / artefak rilis / rilis untuknya? (ada beberapa yang di-host di github dan membutuhkan git clone atau menawarkan master tarball untuk diunduh - bagi saya minus besar jika bahkan tidak melepaskan tag yang diatur dan dialamatkan di README)
  • sebagai ukuran penting saya memberikan beberapa petunjuk di mana itu mudah didapat (saya tidak mengunduh apa pun, jadi dari proyek-proyek yang tidak menawarkan artefak rilis, tidak ada ukuran)

Dan di sini adalah daftar kerangka kerja dengan catatan pada poin di atas. Saya mencari beberapa lebih seperti aBatis dan Hadi tetapi saya menambahkan hanya mereka yang memiliki beberapa kegiatan setelah 2011.

Saya belum mencoba salah satu dari itu tetapi mungkin saya dapat menyisihkan sedikit pembaca saat ini dengan mendaftar proyek yang aktif saat ini. Silakan tambahkan komentar jika Anda mengetahui proyek lain yang memuaskan beberapa poin di atas dan ada beberapa perkembangan serius (dari waktu ke waktu) yang sedang berlangsung.

EDIT (2013 Nov): memperbarui daftar ke status proyek saat ini. Beberapa di antaranya telah menambahkan tag rilis ke repositori github mereka serta dukungan Maven / Gradle. Kerja bagus!

EDIT (2015 Apr): memperbarui daftar, menambahkan Sprinkles (sesuai komentar oleh @AndroidGecko) dan Realm.io.


Saya sangat merekomendasikan untuk menggunakan Realm, ini sangat cepat dan lancar untuk bekerja!
Crono

39

Jika kinerja dan ukuran kode penting, periksa greenDAO . Saya penulisnya, dan motivasi saya untuk membuat ORM lain adalah untuk menghindari refleksi di hotspot. Ternyata greenDAO dapat mencapai 4 kali lebih cepat dari ORMLite. Lihat halaman fitur untuk detailnya.


5
Terlihat cukup bagus, tetapi harus menghasilkan Dao adalah belokan bagi saya :(
Chris.Jenkins

4
Ya, menghasilkan kode adalah langkah tambahan untuk pengembang, tetapi ini menghemat banyak kinerja dalam aplikasi. Hasil basis data bootstrap dan parsing secara signifikan lebih cepat. Alat-alat lain mengandalkan refleksi, yang sangat lambat di Android.
Markus Junginger

1
Saya menggunakan greenDao dalam proyek saya, dan saya sangat senang dengan itu.
mabac

3
@ greenrobot, apakah Anda memiliki beberapa showcases "aplikasi besar" menggunakan lib Anda?
StErMi

1
@StErMi Path menggunakan greenDAO. Mereka memiliki instalasi> 1 M. Lihat github.com/greenrobot/greenDAO/issues/20#issuecomment-13278922
Markus Junginger

10

Saya tidak tahu apa pun yang persis apa yang Anda minta, tetapi ada alternatif untuk SQLite yang mungkin berguna jika persyaratan arsitektur Anda fleksibel. Mungkin perlu dicoba db4o :


saya mendapat hasil yang baik dengan DB40 ... ingin checkout Android Aktif ...
Ben

1
activeandroid.com terlihat keren, saya tak sabar untuk mencobanya
slf

9

ActiveAndroid ($ 20) sepertinya memang tepat seperti yang Anda butuhkan.


14
Saya tahu Anda tidak mencoba sesuatu yang licik di sini, tetapi bisakah Anda mengungkapkan afiliasi Anda dalam posting Anda ketika Anda menyebutkan salah satu produk Anda sendiri di SO? Saya tahu nama Anda ada di bagian bawah halaman yang ditautkan, tetapi kami mencoba untuk menindak astroturfing (yang bukan ini), jadi kami meminta semua orang untuk mengikuti pedoman pengungkapan yang sama. Terima kasih.
Bill the Lizard

4
Hanya kepala, ActiveAndroid tidak gratis.
gak

7
ActiveAndroid sekarang gratis dan open-source - pardom.github.com/ActiveAndroid
Michael Pardo

7

Saya menyukai ActiveAndroid. Tampaknya ini ditulis khusus untuk Android. Itu terasa seperti nilai tambah bagi saya.

Saya memiliki pengalaman Ruby on Rails dan jika Anda menyukai cara Rails dari ActiveRecord, Anda dapat dengan cepat bergerak dengan perpustakaan ini.

https://www.activeandroid.com/


Kerangka yang bagus, tetapi bertentangan dengan pustaka org.codehous.jackson, jadi jika Anda menggunakannya dalam proyek Anda, Anda tidak akan dapat menggunakan ActveAndroid
endryha

1
Bagaimana konfliknya? Apakah Anda melaporkannya sebagai bug di tracker.activeandroid.com ?
Michael Pardo

Mungkin melihat androrm.the-pixelpla.net memiliki sebagian besar fitur dan saya akan mengatakan lebih banyak lagi. Plus: gratis dan open source.
philgiese


6

Saya juga mencari ORM di Android. Saya diuji ActiveAndroid , NeoDatis dan db4o , dan saya berpikir bahwa saya akan menggunakan salah satu dari dua terakhir.

NeoDatis dan db4o sangat mirip, jadi saya ingin beberapa saran untuk memilih yang terbaik. Apakah seseorang menggunakan salah satunya di proyeknya? Saya akan menggunakannya untuk aplikasi gratis dan berbayar, tetapi tampaknya keduanya tidak memiliki batasan lisensi untuk Android.

Ada tolok ukur di sini yang tampaknya mengatakan bahwa NeoDatis lebih cepat daripada db4o, tapi saya tidak tahu apakah kita bisa mendasarkan pendapat saya pada ini.


Db40 dan NeoDatis adalah basis data objek, hanya ukuran ini yang benar-benar terlarang untuk digunakan di Android
Bostone

@ DroidIn.net dapatkah Anda memberikan tautan yang mendukung komentar Anda?
Sergio


2

ActiveRecordJS dari Aptana adalah ORM Javascript yang harus dijalankan pada gPhone. Ini dirancang untuk bekerja dengan Jaxer dan Gears. Saat Anda menggunakan Jaxer Adapters, Anda dapat terhubung ke SQLLite.

UPDATE: Saya rasa saya tidak menjelaskannya, tetapi ActiveRecordJS adalah ORM yang menjalankan sisi klien, yang bisa menjadi keuntungan bagi Anda di gPhone.


Dalam kode Java? Atau dalam kode JavaScript?
GWLlosa

Saya cukup yakin apa yang Anda bicarakan adalah solusi Javascript yang murni ditujukan untuk aplikasi berbasis web (Web). Saya tidak melihat kaitannya dengan pengembangan aplikasi asli untuk Android.
Brian Lacy


1

Saya telah mengembangkan implementasi JPA ORM untuk Android saya sendiri. Ini belum sepenuhnya fitur lengkap, tetapi Anda dapat membuat anotasi kelas dengan penjelasan @Entity, @Id, @Column dan Anda mendapatkan entitas JPA yang dapat disimpan dan diambil dari database SQLite. Perlu beberapa fitur & pembersihan sebelum saya mempostingnya ke publik, tetapi jika ada minat yang cukup mungkin mempercepat usaha saya.


Kedengarannya menarik, apakah Anda sudah tahu untuk melihat / mencoba? Cheers, Martin
MartinGrotzke

Lebih dari setahun kemudian, bagaimana kemajuannya? JPA + Anotasi di Android terdengar HEBAT!
Spidey



0

Memiliki pengalaman negatif dengan db4o (v. 8): pengindeksan tidak berfungsi dengan baik (pengecualian dll.). Jadi saya tidak berhasil bagaimana menghindari membuat duplikat di tabel asing ketika memiliki objek dalam struktur objek. Penjelasan lebih rinci dalam pertanyaan saya . Semoga suatu hari nanti akan lebih baik.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.