2012-07-13 30 views
11

我目前有一個應用程序,其主要性能問題是使用由JSON響應組成的基於文件的數據庫。爲Android項目選擇ORM(最低API級別7)

我想重寫我的應用程序使用SQLite數據庫功能。
由於我很懶,我想使用某種ORM。

到目前爲止,我只發現了兩個大的ORM庫:

我的首要目標是在工作提高性能與數據一樣多可能

但我發現這些庫有兩個可能的問題。

  • ORMLite使用註釋,這是很大的,由於this bug性能問題在預蜂窩

  • GreenDAO使用某種代碼生成器,這將慢下來的發展我將不得不編寫生成器,然後使用生成的代碼。我不太喜歡這個想法。

  • DB4O是JPA,我一直認爲是緩慢而沉重的內存使用情況,因此不適用於低端設備(記得在Android API V7)


廣告@ ChenKinnrot
估計的負載應該足以考慮使用ORM。
在我的情況下,它是大約25-30個唯一表,並且至少有10個表聯接(每次2-4個表)。約300-500獨特的字段(列)


所以我的問題是:

  1. 我應該在Android應用程序中使用ORM/JPA層?
  2. 如果是這樣,你會推薦我使用哪個庫?(並請添加一些論點太)
+0

我們在談論幾張表?你的數據有多大? – 2012-07-13 14:13:51

+1

爲了記錄,ORMLite還支持您的類型的表配置,它可以解決註釋性能問題。 – Gray 2012-07-13 16:01:55

+0

@格雷很高興聽到這個消息,如果你有興趣,隨時以例子和基準發表答案,因爲你是合適的人,誰應該擁有這些數據。 – 2012-07-13 16:29:47

回答

4

我已經使用ORMLite,發現它很簡單,一旦你掌握了它(幾個小時),相當強大,並沒有導致任何性能問題(在HTC慾望和HTC Hero上測試的薑餅應用程序)。

我將在任何需要使用數據庫的項目中再次使用它。

+0

我喜歡它,但是,由於JPA沒有得到完全支持,值得一提的是,您必須比JPA更多地使用ormlite的註釋系統。 – Snicolas 2013-11-03 15:24:37

+0

是否還有其他庫的基準比較,如SugarOrm? – 2014-02-20 11:42:02

0

我得到了一些知識分享這樣: ORM顧名思義就是比寫自己的SQL要慢,它的假設,以簡化數據訪問的編碼,並提供了一個通用的解決方案,generic =運行速度比寫你的查詢要慢,如果你知道sql的話。

真正的問題是你想獲得多好的性能,如果它是最好的,不考慮任何數據映射框架,只有sql生成框架可以幫助你更快地寫東西,但是可以讓你完全控制所有東西。

如果你不想充分利用sql數據庫,使用orm,我沒有經驗,你提到的這個orm,所以我不能說什麼選擇。

而你的數據庫不是那麼大和複雜,所以你用orm保存的時間不是問題。

2

ORM層很有吸引力。

但是,在實踐中,我要麼編寫簡單的ORM 我自己或使用Content Provider範例,它與ORM不協作。

我已經看過一些現有的ORM庫(主要是ORMLite,activeAnroid),但他們都把我嚇跑了 ,因爲他們似乎不容易入門。

「我們談論的是25-30獨特的表,和至少10個表連接。 300-500獨特的字段(列)」

如果你有固定的和有限的圖形如何查詢數據,我會推薦自己編寫ORM/sql。

我的2美分。

1

如果你擔心你的應用程序的性能,我建議使用greenDAO。它可以幫你避免編寫大量枯燥的代碼,因此代碼生成不應該成爲問題。作爲回報,它也會爲您生成實體和DB單元測試。

0

以我的經驗,我使用ORM引擎有很多好處。然而,當時我不得不面對性能問題。

我不得不從數據庫加載大約10 000行,並且使用標準實現(我使用的是ORMLite),大約需要1分鐘才能完成(取決於設備的CPU)。

當您需要從數據庫中讀取大量數據時,您可以執行普通SQL並自己解析結果(在我的情況下,我只需要從表中查詢3列)。 ORMLite還允許您檢索原始結果。由此,表現增加了10倍。所有10 000行都在5秒或更短時間內裝入!

相關問題