2012-09-24 141 views
1

來自perl背景並做了一些簡單的OO,我很努力地掌握android/Java與數據庫交互的方式。Android數據庫最佳實踐

根據我的經驗,我會爲每個對象創建一個文件或類,並且一個對象將匹配/表示數據庫中的一個表。

在這一目標將是一個構造函數,對數據,方法/函數的變量返回單個變量也是DB查詢閱讀並從DB寫,做一切必要的CRUD功能。

從我在網上閱讀的內容來看,在Android中我會創建類似的對象,但沒有數據庫交互。這可能發生在具有我所有數據庫功能的單個類中,也可能發生在多個數據庫類中,每個表都有一個類。

我的問題都是關於最佳實踐的。

我可以在Perl中完成我的應用程序嗎?如果不是,爲什麼不,如果是的話,有什麼優點和缺點和限制?

DAO,Adapter和POJO是什麼意思?

我應該創建一個應用程序類並在其中全局聲明數據庫嗎?

我應該只在每個活動或應用程序類中創建一個處理程序嗎?

現在我已經看了這麼多教程我的頭在旋轉,所有的做事方式差異,大多隻用一個表和幾個顯示直接代表表實際的對象。

我很高興聽到意見,鏈接到教程或只是有奇怪的術語解釋。

在此先感謝

回答

1

如果我正確地讀你,ORMLite可能是你最好的選擇。它使用反射來創建和維護數據庫,這似乎是Perl如何做到的。

+0

我不知道這是我想要的。它似乎仍然有一個單獨的數據庫類,每個對象和對象本身。 稍後我會寫一些模擬代碼作爲我想要的例子 –

1

POJO是Plain old java object這意味着它僅僅是一個普通的類。

適配器將是包含CRUD內容並管理數據庫本身的類。 Android世界中有相當多的模式,談論可以填寫一本書。 我更喜歡這種模式,即在應用程序類中打開數據庫一次,我從不關閉它(Android在殺死應用程序時會這樣做)。來自一個非常古老的項目的sample可能會告訴你基本的想法。

DAO是Data Access Object並且可以填寫幾十本書。如果只想開始編程,看看你的標題...

1

其他海報是在撲滅ORMLite爲管理代碼的關係是鏡像數據庫的好方法是正確的。但是,如果你想自己做,那麼有很多方法可以做,而且我不會說這個社區真的相互傾向。就我個人而言,我傾向於讓我的實體由Plain Old Java Objects(POJO - 表示與數據庫之類的其他事物沒有特別的連接)表示,其中表的各種屬性與字段值相對應。然後,我通過數據訪問對象(DAO)持久保存並檢索這些對象。DAO都可以訪問一個共享的,開放的數據庫對象 - 根據需要他們執行查詢。

例如:如果我有一個表foo,我將有一個對應的實體class Foo,其中屬性對應於列。 class FooDAO將有機制獲得Foo

public Foo getFooById(Integer id) { 
    String[] selection = {id.toString()}; 
    String limit = "1" 
    Cursor c = mDatabase.query(FOO_TABLE, null, "id=?", selection, null, null, null, 1); 
    // Create a new Foo from returned cursor and close it 
} 

第二實體bar可能有許多foo。爲此,我們將在酒吧,引用FooDAO讓所有酒吧的成員的foo:

public class Bar { 
    public List<Foo> getFoo() { 
    return mFooDAO.getFooByBar(this); 
    } 
} 

等等什麼人可以滾動自己的ORM這樣是相當龐大的能力範圍,所以儘可能做或儘可能少地做你需要的事。或者只是使用ORMLite並跳過了整個事情:)

另外,Android的工程師子類的應用有利於Singletons皺眉的全局訪問對象(見hackbod的答案),但衆說紛紜