我们有一个应用程序,需要在创建时检测某些字段中的重复项。我们使用Hibernate作为持久层,并使用Spring的HibernateTemplate。我的问题是,最好是在创建之前对项目进行先期查找,还是尝试捕获DataIntegrityViolation异常,然后检查是否由重复的条目引起,是否更好。
这取决于重复是例外情况还是业务逻辑案例。 例如,在注册过程中检查唯一的电子邮件/用户名是一种业务逻辑案例,应在尝试插入之前进行检查
如果需要通过唯一性约束指示哪个字段确实失败,则最好事先检查它,而不是捕获异常。捕获异常不会为您提供重要的详细信息-哪个字段失败了。
有一些方法可以基于异常获取此信息,但是它非常繁琐且特定于数据库(在DB中查找约束名称(特定于db),获取要应用的字段,将字段与实体属性)