[英]Android ContentProvider vs ORMLite
我正在使用內容提供程序來管理我的應用程序數據,這些數據不與其他應用程序共享。 但是,有一些樣板代碼,例如將光標轉換為域對象。 ORMLite提供了一種更優雅的方式,可以直接將數據庫條目映射到域對象。 所以我想用ORMlite替換內容提供者。 但我有些擔心:
我是否應該用ORMLite替換內容提供者?
我不認為,您可以將ORM與Content Provider進行比較。 ORMLite提供以下功能鏈接到用戶,並在開發時具有完全獨立的目標。
但除了你提到的東西之外,它們還有內容提供商的其他好處。
如果您想在多個應用程序或進程之間共享日期。 可能現在你沒有任何計划,但似乎你的應用程序在數據庫上很重,如果你計划與第三方或你的另一個應用程序共享你的數據,你可以選擇內容提供商。
內容提供商是Android的所有版本的標准,這也意味着您的應用程序是安全的。 我很確定ORMLite也很穩定。 但是你真的想冒這個風險,特別是如果不節省你的時間或你沒有任何業務要求這樣做。 Android API已經碎片化了你想在此基礎上再承擔另一項工作量嗎?
如果您想將數據上傳到雲,很容易與SyncAdapter集成
使用Android安全和權限功能。
您對處理Content Provider所需的額外代碼是正確的。
現在我正在開展一個項目,我們有大約20個桌子。 我為每個表創建了一個DAO。 基本上內部使用內容提供商。
DAO-> Content Provider-> SQL Lite Open Helper
Class XyzDao{
private final Context mContext;
XyzDao(Context context){
this.mContext=context;
}
public String getMyData(){
//content provider code
return myData;
}
public void setMyData(String x, int y, double z){
//content provider code to set the data
}
}
我本可以在沒有內容提供商的情況下完成,現在當前的要求可以正常工作,但我仍然選擇這條路線。 你會問為什么?
而且,最好的部分來自任何Activity我只需使用我的DAO來訪問數據庫。
或者,您可以直接從DAO訪問SQLLiteOpenHelper 。
在一天結束時,每個選擇都取決於您的業務需求。 如果你有很多持久性對象,ORMLite可能是個不錯的選擇。
一方面我更喜歡使用OrmLite制作ER模型,另一方面,ContentProvider提供了如上所述的一些好處。 這就是為什么我實現了通用的ContentProvider,允許訪問OrmLite ER模型。 這是https://github.com/blandware/android-atleap
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.