我需要在数据库中创建礼品卡实体,其中礼品卡代码由算法生成,并且它们发生冲突的可能性非常低。
在将礼品卡实体插入数据库之前,我们仍然需要检查重复礼品卡实体的可能性。
还需要注意以下几点
- 需要根据管理员的要求生成相同数量的礼品卡实体
- 为了遵循第 1 点,我们需要查找数据库中已存在哪个礼品卡代码,并且需要再次生成代码。
我正在使用 Hibernate 进行数据库操作,并且有以下选项。
第一个选项
- 创建礼品卡代码列表
- 开始为每个礼品卡代码创建实体并尝试将它们插入数据库中。
- 如果我们发现现有礼品卡实体有任何异常,请将该代码存储在废弃代码列表中。
- 再次重复丢弃列表的过程
第二个选项
- 生成礼品卡代码列表。
- 在创建礼品卡实体之前检查数据库中的重复代码。
- 对于废弃列表,请再次创建礼品卡代码并按照第 2 点进行操作。
- 对于最终列表,创建实体并插入数据库
我对哪种方法更可取有点困惑?
最佳答案
为了确保不允许重复,您必须在用于存储礼品卡代码的列上具有唯一索引和/或唯一约束。
也就是说,我会推荐第一个选项,因为如果礼品卡代码重复的可能性较低,它会更有效。同样在第二个选项中,即使您在插入新代码之前检查重复项,也不能保证在检查和插入之间数据库中没有插入具有相同值的代码,因此您还必须处理插入抛出约束异常时的情况。
关于java - 检查数据库中重复记录的最佳方法| hibernate ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25643000/