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

Dea*_*vey 4 java spring hibernate

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

Boz*_*zho 9

这取决于重复是一种特殊情况还是业务逻辑情况.
例如,在注册期间检查唯一的电子邮件/用户名是业务逻辑情况,并且应该在尝试插入之前完成检查

如果您需要使用唯一约束指示哪个字段确实失败了,您最好事先检查它,而不是捕获异常.捕获异常并不能为您提供重要的详细信息 - 哪个字段已失败.

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