2016-05-21 37 views
0

在我正在處理的Android應用程序中,對象債務代表數據庫中的表債務中的一項。讓另一個線程將數據寫入數據庫的挑戰(Android,java)

我創建了類型的對象隊列和一個叫做的線程DatabaseWriter。當我在這個隊列中放置一個債務時,該線程被喚醒並負責在數據庫中創建一個新條目,其中包含所述債務對象中包含的數據。

我的問題是這樣的:

  1. 債務對象必須寫入到數據庫之前,我可以知道它的主鍵(類型爲整數),它被設置爲自動增量

  2. 與此同時,我正在使用數據庫主鍵來識別應用程序中的對象債務。例如,我有HashMaps,其中密鑰將是數據庫中的主鍵,值本身就是對象。

的結論是,直到我知道在數據庫中的主鍵我不能同時更新數據庫,因爲我不能用新創建債務對象。有了這個模型,我留下的唯一可能性就是按順序做所有事情。

有沒有辦法解決這個問題?有什麼設計模式可以解決它?我是新的數據庫。

回答

0

我沒有Android開發經驗,但是在使用Mybatis和Mysql時,可以使用SELECT LAST_INSERT_ID()在插入對象後立即獲取主鍵。在這種情況下,如果你不能改變數據庫的設計,你可以寫一個名爲IDGenerator類,它會做兩兩件事:

  1. 獲得該表中的最大ID時,程序啓動,並在名爲nowIdAtomicLong值保存
  2. 提供像getId()的方法,這種方法只是返回nowId.incrementAndGet()
相關問題