java - 检查数据库中重复记录的最佳方法| hibernate

标签 java sql hibernate jpa jpa-2.0

我需要在数据库中创建礼品卡实体,其中礼品卡代码由算法生成,并且它们发生冲突的可能性非常低。

在将礼品卡实体插入数据库之前,我们仍然需要检查重复礼品卡实体的可能性。

还需要注意以下几点

  1. 需要根据管理员的要求生成相同数量的礼品卡实体
  2. 为了遵循第 1 点,我们需要查找数据库中已存在哪个礼品卡代码,并且需要再次生成代码。

我正在使用 Hibernate 进行数据库操作,并且有以下选项。

第一个选项

  1. 创建礼品卡代码列表
  2. 开始为每个礼品卡代码创建实体并尝试将它们插入数据库中。
  3. 如果我们发现现有礼品卡实体有任何异常,请将该代码存储在废弃代码列表中。
  4. 再次重复丢弃列表的过程

第二个选项

  1. 生成礼品卡代码列表。
  2. 在创建礼品卡实体之前检查数据库中的重复代码。
  3. 对于废弃列表,请再次创建礼品卡代码并按照第 2 点进行操作。
  4. 对于最终列表,创建实体并插入数据库

我对哪种方法更可取有点困惑?

最佳答案

为了确保不允许重复,您必须在用于存储礼品卡代码的列上具有唯一索引和/或唯一约束。

也就是说,我会推荐第一个选项,因为如果礼品卡代码重复的可能性较低,它会更有效。同样在第二个选项中,即使您在插入新代码之前检查重复项,也不能保证在检查和插入之间数据库中没有插入具有相同值的代码,因此您还必须处理插入抛出约束异常时的情况。

关于java - 检查数据库中重复记录的最佳方法| hibernate ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25643000/

相关文章:

java - getScreenshotAs 方法在哪里定义?

java - 如何构建 netty-transport-native-epoll-4.0.32.Final-linux-x86_64.jar?

java - 时间:下周五怎么过?

mysql - mysql 中的 INSERT...SELECT 查询

java - 事务未成功启动(而 tx.commit() 被 if 条件包围)

java.sql.Date (YYYY-MM-DD) 到 java.util.Date (DD-MMM-YYYY) 转换

c# - Quartz.NET 设置 MisfireInstruction

sql - 能够对两个 VarChar 参数执行 LIKE

oracle - hibernate oracle 序列产生大的间隙

java - Springboot 2 CrudRepository.save总是抛出ConstraintViolationException