Apakah masuk akal untuk menggunakan ORM dalam pengembangan Android?

27

Apakah masuk akal untuk menggunakan ORM dalam pengembangan Android atau apakah kerangka kerja dioptimalkan untuk kopling yang lebih erat antara UI dan lapisan DB?


Latar Belakang : Saya baru saja mulai dengan pengembangan Android, dan insting pertama saya (berasal dari latar belakang .net) adalah untuk mencari mapper-relasional objek kecil dan alat-alat lain yang membantu mengurangi clode boilerplate (misalnya POJO + OrmLite + Lombok ).

Namun, ketika mengembangkan aplikasi mainan pertama saya, saya menemukan sebuah kelas UI yang secara eksplisit membutuhkan kursor basis data: AlphabetIndexer. Itu membuat saya bertanya-tanya apakah mungkin perpustakaan Android tidak cocok untuk decoupling ketat lapisan UI dan DB dan bahwa saya akan kehilangan banyak fitur yang bermanfaat dan menghemat waktu jika saya mencoba menggunakan POJOs di mana saja (alih-alih akses basis data langsung ).


Klarifikasi : Saya cukup menyadari keuntungan menggunakan ORM secara umum , saya secara khusus tertarik pada seberapa baik perpustakaan kelas Android bermain dengannya.

Heinzi
sumber

Jawaban:

20

Android tidak bermain sebaik kerangka kerja lainnya. Gaya pengembangan yang disarankan menganggap Anda membangun semuanya dari API-nya, tanpa pustaka lain. Lapisan UI sangat erat digabungkan dengan model. Gaya ini ideal untuk menulis aplikasi yang lebih kecil dan modular, bukan untuk aplikasi yang kompleks.

Anda perlu memikirkan apakah Anda akan menginginkan fungsi Android apa pun; jika Anda tidak membutuhkannya, maka Anda tidak akan rugi dengan menggunakan ORM. Jika ini bukan masalahnya, Anda mungkin harus puas dengan hibrida. Gunakan ORM untuk semua yang Anda bisa, tetapi berikan diri Anda kait untuk Cursordan benda-benda tingkat rendah lainnya yang Anda butuhkan. Jika ORM yang Anda pilih memerlukan DAO (saya tidak terbiasa dengan yang Anda sebutkan), maka lapisan ini mungkin merupakan tempat terbaik untuk mereka.

Atau, Anda mungkin tidak perlu menggunakan ORM eksternal sama sekali. Jika kebutuhan Anda mudah, Anda dapat menulis lapisan akses data sederhana yang memenuhi mereka. Sebagian besar persyaratan basis data aplikasi tidak bagus. Jika Anda hanya memiliki beberapa tabel, cukup tulis beberapa kelas akses dan objek model dan sebut itu bagus.

YAGNI dan KISS adalah kata kunci untuk sukses di sini. Saya sarankan Anda menghabiskan beberapa hari membuat prototipe. Jangan takut untuk membuang aplikasi tes sederhana. Cobalah semua ide Anda sendiri, lalu putuskan apakah ada atau semua akan bekerja untuk proyek Anda.

Michael K.
sumber
6

Itu tergantung pada apa yang Anda lakukan dengan model data Anda. Jika Anda memiliki kode yang ada yang memanipulasi model berorientasi objek, dan jika Anda ingin bertahan objek-objek dalam database sqlite, Anda memerlukan orm.

Jika Anda menulis kode Android baru dari awal, saya akan menghindari model data dalam memori kecuali jika aplikasi melakukan manipulasi OO yang benar-benar kompleks, seperti program CAD, misalnya. Tetapi, untuk sebagian besar program, simpan model data dalam basis data, dan biarkan rantai kursor, Adaptor, dan objek Lihat melakukan banyak pekerjaan berat untuk Anda.

Zigurd
sumber