Android gelişiminde ORM kullanmak mantıklı mı?


27

Bir ORM'yi Android geliştirmede kullanmak mantıklı mıdır yoksa çerçeve UI ve DB katmanı arasında daha sıkı bir bağlantı için optimize edilmiş midir?


Arkaplan : Android geliştirme ile daha yeni başladım ve ilk içgüdüm (.net arkaplanından geliyor) küçük bir nesne-ilişkisel eşleştiriciyi ve kazan plakası klodunu azaltmaya yardımcı olan diğer araçları (örn. POJOs + OrmLite + Lombok ) aramaktı .

İlk oyuncak uygulama geliştirirken Ancak, ben açıkça bir veritabanı imleci gerektiren bir UI sınıfında tökezledi: AlphabetIndexer. Bu, belki Android kütüphanesinin UI ve DB katmanının katı bir şekilde ayrıştırılması için uygun olup olmadığını ve her yerde POJO'lar (doğrudan veritabanı erişimi yerine) kullanmayı denemem durumunda çok sayıda yararlı, zaman kazandıran özellikleri kaçırmayıp çözmeyeceğimi merak etti. ).


Açıklama : Genel olarak ORM kullanmanın avantajlarının oldukça farkındayım, özellikle Android sınıf kütüphanesinin beraberinde ne kadar iyi oynadığıyla ilgileniyorum.

Yanıtlar:


20

Android, diğer çerçevelerle mümkün olduğu kadar iyi oynamıyor. Önerilen geliştirme stili, diğer kütüphaneler olmadan API'sinden her şeyi oluşturduğunuzu varsayar. UI katmanı modele çok sıkı bağlanmıştır. Bu stil karmaşık uygulamalar için değil, daha küçük, modüler uygulamalar yazmak için idealdir.

Android işlevlerinden herhangi birini isteyip istemediğinize dair bazı düşünceler vermeniz gerekir; İhtiyacınız yoksa, bir ORM kullanarak kaybedecek bir şeyiniz yoktur. Bu durumda değilse, bir melez için razı olmanız gerekebilir. Yapabildiğiniz her şey için bir ORM kullanın, ancak kendinize kancalar Cursorve ihtiyacınız olan diğer düşük seviye nesneler için kanca verin . Seçtiğiniz ORM DAO'lar gerektiriyorsa (bahsettiğiniz şeye aşina değilim), o zaman bu katman muhtemelen onlar için en iyi yerdir.

Alternatif olarak, hiçbir harici ORM kullanmanız gerekmeyebilir. İhtiyaçlarınız basitse, onları karşılayan basit bir veri erişim katmanı yazabilirsiniz. Çoğu uygulama veritabanı gereksinimi büyük değildir. Yalnızca birkaç tablonuz varsa, birkaç erişim sınıfını ve model nesnelerini yazın ve onu iyi arayın.

YAGNI ve KISS, burada başarının anahtarıdır. Birkaç gün prototipleme geçirmeni öneririm. Basit test uygulamalarını atmaktan korkmayın. Yalnızca tüm fikirlerinizi deneyin, ardından projeniz için çalışıp çalışmayacağına karar verin.


6

Veri modelinizle ne yaptığınıza bağlı. Nesne yönelimli bir modeli işleyen mevcut bir kodunuz varsa ve bu nesneleri bir sqlite veritabanında saklamak istiyorsanız, bir orma ihtiyacınız vardır.

Sıfırdan yeni Android kodu yazıyorsanız, örneğin bir CAD programının yapabileceği gibi uygulama gerçekten karmaşık OO manipülasyonları yapmazsa, bellek içi veri modelinden kaçınırdım. Ancak çoğu program için veri modelini veritabanında tutun ve İmleç, Bağdaştırıcı ve Görünüm nesneleri zincirinin sizin için çok fazla ağır yük bırakmasına izin verin.

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.