将唯一实体插入sqlite DB

时间:2015-08-19 17:55:20

标签: java sqlite

sqlite DB中最多有100k个实体具有以下结构:

  • ID(数字,PK)
  • KEY(Varchar,Unique / PK)
  • 其他字段,主要是varchars

我有一个大约100-1k个实体的列表。我想只向DB添加那些实体,这些实体在数据库中不存在,并显示添加的实体列表。

示例

作为相关示例,您可以考虑这样的事情:将图书作为实体的图书馆。每本书都有图书馆目录中的全球唯一ISBN号(KEY)和唯一ID(ID)。 有人带图书馆藏书。图书馆按目录中的ISBN检查书籍,采取新的'所有书籍的人员名单上的书籍和节目。

一些想法如何实现:

1)从DB中选择所有KEY,将它们放入[hash] set,在循环中验证集合中不存在来自新实体的KEY。
2)与#1类似,但不是选择所有KEY,而只选择在DB和列表中同时出现的KEY 3)循环检查实体的存在与附加选择查询
4)在DB中启用约束,通过捕获异常检查存在

我相信所有这些都有自己的缺点。你能提出更好的建议吗?

现在我主要询问最佳做法'我相信任何一种方法都适用于我的情况而没有出现巨大的性能问题(现在没有实际的测试,我' m只是在分析阶段),但应该怎样做得更好?

代码将使用Java,我计划在JDBC中使用简单的DAO,但如果有人建议将Hibernate作为替代方法,我将重新考虑我的想法。

1 个答案:

答案 0 :(得分:0)

您建议的解决方案都是有效且可能的情况,尽管#1号和#4号很少是好主意。编号#2和#3是经常使用的解决方案。要从这两个中进行选择,您需要回答以下问题:

  • 您的应用程序的典型用例是什么? (有时你会得到一本新书,你会一次得到数百本书,混合在一起)
  • 根据“判断”此代码的指标,您要优化什么? (可读性/可维护性,性能等)

根据上述问题的答案,您可以选择#2或#3。