有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用java检查数据库中重复值的最佳实践

我使用@Column(unique=true)设置用户名的唯一约束 在将数据插入数据库之前检查重复值的最佳做法是什么

  1. 通过捕获当您尝试插入具有相同用户名的数据时程序将引发的异常
  2. 在尝试插入之前,请检查数据库中提供的用户名是否已存在

共 (3) 个答案

  1. # 1 楼答案

    这取决于你的设计。如果所讨论的检查在性能上不是关键的,或者成本不高,那么它实际上并不重要。从DB抽象层抛出的异常可以减少代码中的噪音,而有时需要在我们知道操作可以完成之前进行大量检查(取决于手头的问题)(通常需要进行错误处理)

    还有另一个方面:独特真的是你想要的吗? 如果您使用的是MS SQL server,它不支持ANSI null,即定义为唯一的列可能只包含一个null值。我怀疑用户名从来都不是空的,但在其他一些唯一列上可能不是这种情况——在MS SQL Server上,您需要应用唯一筛选的索引(或类似索引),或者在应用程序中提前进行检查

    我投票支持抛出一个异常+@eis建议的内容:检查UI中的用户名可用性

  2. # 2 楼答案

    我认为解决方案1(试捕)是好的。对于解决方案2,您仍然需要异常处理,以防数据库中存在并发性

  3. # 3 楼答案

    在UI中输入此类用户名数据时,如果存在此类UI,请立即检查用户名的重复项。例如,使用javascript/XHR

    提交后重新检查,因为javascript验证可以跳过,情况可能已经改变

    如果在所有这些之后仍然存在一个重复的用户名(由于检查失败或有人同时插入),对我来说这听起来像是一个例外情况,所以捕捉一个例外

    简而言之,两个选项,第二个检查两次