一尘不染

使用Spring Hibernate模板时检测重复项的最佳方法

hibernate

我们有一个应用程序,需要在创建时检测某些字段中的重复项。我们使用Hibernate作为持久层,并使用Spring的HibernateTemplate。我的问题是,最好是在创建之前对项目进行先期查找,还是尝试捕获DataIntegrityViolation异常,然后检查是否由重复的条目引起,是否更好。


阅读 277

收藏
2020-06-20

共1个答案

一尘不染

这取决于重复是例外情况还是业务逻辑案例。
例如,在注册过程中检查唯一的电子邮件/用户名是一种业务逻辑案例,应在尝试插入之前进行检查

如果需要通过唯一性约束指示哪个字段确实失败,则最好事先检查它,而不是捕获异常。捕获异常不会为您提供重要的详细信息-哪个字段失败了。

有一些方法可以基于异常获取此信息,但是它非常繁琐且特定于数据库(在DB中查找约束名称(特定于db),获取要应用的字段,将字段与实体属性)

2020-06-20