簡體   English   中英

將唯一實體插入sqlite DB

[英]Insert unique entities to the sqlite DB

sqlite DB中最多有10萬個實體,其結構如下:

  • ID(數字,PK)
  • 密鑰(Varchar,唯一/ PK)
  • 其他領域,主要是varchars

我有大約100-1k個實體的列表。 我只想向數據庫中添加那些在數據庫中不存在KEY的實體,並顯示已添加實體的列表。

作為一個相關的示例,您可以考慮這樣的事情:以書籍為實體的圖書館。 每本書在圖書館目錄中都有全局唯一的ISBN號(KEY)和唯一的ID(ID)。
有人把這套書帶到圖書館。 圖書館通過ISBN檢查目錄中的書籍,將“新”書籍收錄並顯示給收錄人員清單。

一些想法如何實現它:

1)從數據庫中選擇所有KEY,將它們放入[hash] set,循環驗證該集合中不存在來自新實體的KEY。
2)與#1類似,但不要選擇所有KEY,而只選擇同時存在於數據庫和列表中的KEY
3)用附加的選擇查詢循環檢查實體的存在
4)在數據庫中啟用約束,通過捕獲異常檢查是否存在

我相信,所有這些國家都有自己的劣勢。 你能提出更好的建議嗎?

就目前而言,我主要是詢問“最佳實踐”,我相信任何一種方法都可以在沒有嚴重性能問題的情況下適用於我的情況(目前還沒有實際測試,我只是處於分析階段),但是應該怎么做更好?

代碼將使用Java,我計划將簡單的DAO與JDBC一起使用,但是如果有人建議使用Hibernate作為替代方法,我將重新考慮我的想法。

您建議的解決方案都是有效且可能的情況,盡管#1和#4很少是好主意。 #2和#3是經常使用的解決方案。 要從這兩個中選擇,您需要回答以下問題:

  • 您的應用程序的典型用例是什么? (有時您只會獲得一本新書,您總是會一次獲得數百本書籍,混合在一起)
  • 根據該代碼將被“判斷”的度量標准,您要針對哪些方面進行優化? (可讀性/可維護性,性能等)

根據上述問題的答案,您可以選擇#2或#3。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM